whole_func_string: function parseAppMediaQueryParam(allAppTypes, params) {
      let ctx = {
          allAppTypes,
          hasAppMediaType: false,
          tokens: []
      };
  
      let buffer = '';
      for (let i = 0, len = params.length; i < len; i++) {
          let c = params[i];
          if (QUERY_PARAMS_SEPARATORS.includes(c)) {
              buffer = initAppMediaQueryToken(ctx, buffer, c);
              if (buffer === true) {
                  buffer = '';
                  break;
              }
          }
          else {
              buffer += c;
          }
      }
  
      if (buffer) {
          let result = initAppMediaTargetInfo(ctx, buffer.trim());
          result || (ctx.tokens.push(buffer));
      }
  
      return ctx;
  }
func_code_string: function parseAppMediaQueryParam(allAppTypes, params) {
      let ctx = {
          allAppTypes,
          hasAppMediaType: false,
          tokens: []
      };
  
      let buffer = '';
      for (let i = 0, len = params.length; i < len; i++) {
          let c = params[i];
          if (QUERY_PARAMS_SEPARATORS.includes(c)) {
              buffer = initAppMediaQueryToken(ctx, buffer, c);
              if (buffer === true) {
                  buffer = '';
                  break;
              }
          }
          else {
              buffer += c;
          }
      }
  
      if (buffer) {
          let result = initAppMediaTargetInfo(ctx, buffer.trim());
          result || (ctx.tokens.push(buffer));
      }
  
      return ctx;
  }
func_documentation_string: Parse app media query params info
  
  @inner
  @param {Array.<string>} allAppTypes all supported media target types
  @param {string} params the full media query params
  @return {{hasAppMediaType: boolean, tokens: Array.<string>}}