@sentio/sdk-bundle 2.41.5 → 2.41.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aptos/builtin/0x1.js +1 -1
- package/lib/aptos/builtin/0x3.js +1 -1
- package/lib/aptos/builtin/index.js +1 -1
- package/lib/aptos/ext/index.js +1 -1
- package/lib/aptos/index.js +1 -1
- package/lib/btc/index.js +1 -1
- package/lib/{chunk-XYISSQEU.js → chunk-BX4KG2ZR.js} +2 -2
- package/lib/{chunk-LCUGDGMN.js → chunk-CCQHM2XD.js} +2 -2
- package/lib/{chunk-KY5AFKV5.js → chunk-DZVTAQNC.js} +2 -2
- package/lib/{chunk-MGIOFRXM.js → chunk-FFA6VNQP.js} +2 -2
- package/lib/{chunk-X7K74U6O.js → chunk-HITSEVEI.js} +2 -2
- package/lib/{chunk-3C4YSA42.js → chunk-HR3CXVT4.js} +2 -2
- package/lib/{chunk-4ACVSPIF.js → chunk-JDW2L37R.js} +2 -2
- package/lib/{chunk-RDBX2EIJ.js → chunk-L2WN35BE.js} +2 -2
- package/lib/{chunk-CJVPUD6U.js → chunk-LL6GKXEO.js} +2 -2
- package/lib/{chunk-BVDLKPY7.js → chunk-OU2BCESY.js} +2 -2
- package/lib/{chunk-PSYYSAEX.js → chunk-QC6KHXJD.js} +2 -2
- package/lib/{chunk-XZRRBRMQ.js → chunk-RSGRT2DV.js} +2 -2
- package/lib/{chunk-VEVTWG5S.js → chunk-RT6IFBHE.js} +2 -2
- package/lib/{chunk-CSVBDVD7.js → chunk-RWX5CV5W.js} +2 -2
- package/lib/{chunk-TW3ZXDJC.js → chunk-SBU7XQ42.js} +4 -4
- package/lib/{chunk-TW3ZXDJC.js.map → chunk-SBU7XQ42.js.map} +1 -1
- package/lib/{chunk-3KK6D6YO.js → chunk-WWVBF7HH.js} +2 -2
- package/lib/{chunk-VM5J6G66.js → chunk-YCDDNR5A.js} +2 -2
- package/lib/{chunk-4QS3NUUW.js → chunk-ZFXV2FHI.js} +2 -2
- package/lib/{chunk-JTQMVYTS.js → chunk-ZMRHWH7D.js} +11 -11
- package/lib/{chunk-JTQMVYTS.js.map → chunk-ZMRHWH7D.js.map} +1 -1
- package/lib/core/index.js +1 -1
- package/lib/eth/builtin/eacaggregatorproxy.js +1 -1
- package/lib/eth/builtin/erc1155.js +1 -1
- package/lib/eth/builtin/erc20.js +1 -1
- package/lib/eth/builtin/erc721.js +1 -1
- package/lib/eth/builtin/index.js +1 -1
- package/lib/eth/builtin/weth9.js +1 -1
- package/lib/eth/codegen/index.js +1 -1
- package/lib/eth/index.js +1 -1
- package/lib/fuel/codegen/index.js +1 -1
- package/lib/fuel/codegen/index.js.map +1 -1
- package/lib/fuel/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/move/index.js +1 -1
- package/lib/solana/builtin/index.js +1 -1
- package/lib/solana/index.js +1 -1
- package/lib/stark/index.js +1 -1
- package/lib/store/index.js +1 -1
- package/lib/sui/builtin/0x1.js +1 -1
- package/lib/sui/builtin/0x2.js +1 -1
- package/lib/sui/builtin/0x3.js +1 -1
- package/lib/sui/builtin/index.js +1 -1
- package/lib/sui/ext/index.js +1 -1
- package/lib/sui/index.js +1 -1
- package/lib/testing/index.js +1 -1
- package/lib/utils/index.js +1 -1
- package/package.json +2 -2
- /package/lib/{chunk-XYISSQEU.js.map → chunk-BX4KG2ZR.js.map} +0 -0
- /package/lib/{chunk-LCUGDGMN.js.map → chunk-CCQHM2XD.js.map} +0 -0
- /package/lib/{chunk-KY5AFKV5.js.map → chunk-DZVTAQNC.js.map} +0 -0
- /package/lib/{chunk-MGIOFRXM.js.map → chunk-FFA6VNQP.js.map} +0 -0
- /package/lib/{chunk-X7K74U6O.js.map → chunk-HITSEVEI.js.map} +0 -0
- /package/lib/{chunk-3C4YSA42.js.map → chunk-HR3CXVT4.js.map} +0 -0
- /package/lib/{chunk-4ACVSPIF.js.map → chunk-JDW2L37R.js.map} +0 -0
- /package/lib/{chunk-RDBX2EIJ.js.map → chunk-L2WN35BE.js.map} +0 -0
- /package/lib/{chunk-CJVPUD6U.js.map → chunk-LL6GKXEO.js.map} +0 -0
- /package/lib/{chunk-BVDLKPY7.js.map → chunk-OU2BCESY.js.map} +0 -0
- /package/lib/{chunk-PSYYSAEX.js.map → chunk-QC6KHXJD.js.map} +0 -0
- /package/lib/{chunk-XZRRBRMQ.js.map → chunk-RSGRT2DV.js.map} +0 -0
- /package/lib/{chunk-VEVTWG5S.js.map → chunk-RT6IFBHE.js.map} +0 -0
- /package/lib/{chunk-CSVBDVD7.js.map → chunk-RWX5CV5W.js.map} +0 -0
- /package/lib/{chunk-3KK6D6YO.js.map → chunk-WWVBF7HH.js.map} +0 -0
- /package/lib/{chunk-VM5J6G66.js.map → chunk-YCDDNR5A.js.map} +0 -0
- /package/lib/{chunk-4QS3NUUW.js.map → chunk-ZFXV2FHI.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/utils.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/exception.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/each.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/if.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/log.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/lookup.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/with.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/decorators/inline.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/decorators.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/logger.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/proto-access.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/base.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/safe-string.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/wrapHelper.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/runtime.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/no-conflict.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars.runtime.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/ast.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/parser.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/visitor.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/helpers.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/base.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/compiler.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/code-gen.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/printer.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/index.js","../../../src/fuel/codegen/codegen.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/AbiTypeGen.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/Abi.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/AType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/EmptyType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/OptionType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/findType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/getFunctionInputs.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/parseTypeArguments.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/getTypeDeclaration.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/functions/Function.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/makeFunction.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/parseFunctions.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/makeType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/ArrayType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/StrType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/B256Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/B512Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/BoolType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/BytesType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/extractStructName.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/ResultType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/EnumType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/EvmAddressType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/GenericType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/U8Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/U64Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/RawUntypedPtr.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/RawUntypedSlice.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/StdStringType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/StrSliceType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/StructType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/TupleType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/U16Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/U256Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/U32Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/types/VectorType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/supportedTypes.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/shouldSkipAbiType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/parseTypes.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/transpile-abi.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/abi/configurable/Configurable.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/types/enums/ProgramTypeEnum.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/assembleContracts.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/renderHbsTemplate.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/common/common.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/common/index.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/contract/factory.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatEnums.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatImports.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatStructs.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/contract/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/assemblePredicates.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/predicate/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/assembleScripts.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/templates/script/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.1/node_modules/@fuel-ts/abi-typegen/src/utils/validateBinFile.ts","../../../src/fuel/codegen/utils.ts"],"sourcesContent":["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n","const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n","import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n","import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n","import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n","export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n","export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n","import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n","import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n","import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n","import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n","import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n","import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n","import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n","// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n","export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n","import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n","/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n","import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n","let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n","// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n","import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n","import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n","import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n","import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n","/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n","import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n","import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n","/* eslint-disable new-cap */\nimport Visitor from './visitor';\n\nexport function print(ast) {\n return new PrintVisitor().accept(ast);\n}\n\nexport function PrintVisitor() {\n this.padding = 0;\n}\n\nPrintVisitor.prototype = new Visitor();\n\nPrintVisitor.prototype.pad = function(string) {\n let out = '';\n\n for (let i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n};\n\nPrintVisitor.prototype.Program = function(program) {\n let out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n let blockParams = 'BLOCK PARAMS: [';\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.MustacheStatement = function(mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n};\nPrintVisitor.prototype.Decorator = function(mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n};\n\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function(\n block\n) {\n let out = '';\n\n out += this.pad(\n (block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'\n );\n this.padding++;\n out += this.pad(this.SubExpression(block));\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n if (block.program) {\n this.padding--;\n }\n }\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.PartialStatement = function(partial) {\n let content = 'PARTIAL:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function(partial) {\n let content = 'PARTIAL BLOCK:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n\n return this.pad('{{> ' + content + ' }}');\n};\n\nPrintVisitor.prototype.ContentStatement = function(content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\n\nPrintVisitor.prototype.CommentStatement = function(comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\n\nPrintVisitor.prototype.SubExpression = function(sexpr) {\n let params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (let i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n\n return this.accept(sexpr.path) + ' ' + params + hash;\n};\n\nPrintVisitor.prototype.PathExpression = function(id) {\n let path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n};\n\nPrintVisitor.prototype.StringLiteral = function(string) {\n return '\"' + string.value + '\"';\n};\n\nPrintVisitor.prototype.NumberLiteral = function(number) {\n return 'NUMBER{' + number.value + '}';\n};\n\nPrintVisitor.prototype.BooleanLiteral = function(bool) {\n return 'BOOLEAN{' + bool.value + '}';\n};\n\nPrintVisitor.prototype.UndefinedLiteral = function() {\n return 'UNDEFINED';\n};\n\nPrintVisitor.prototype.NullLiteral = function() {\n return 'NULL';\n};\n\nPrintVisitor.prototype.Hash = function(hash) {\n let pairs = hash.pairs,\n joinedPairs = [];\n\n for (let i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n};\nPrintVisitor.prototype.HashPair = function(pair) {\n return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n","// USAGE:\n// var handlebars = require('handlebars');\n/* eslint-env node */\n/* eslint-disable no-var */\n\n// var local = handlebars.create();\n\nvar handlebars = require('../dist/cjs/handlebars')['default'];\n\nvar printer = require('../dist/cjs/handlebars/compiler/printer');\nhandlebars.PrintVisitor = printer.PrintVisitor;\nhandlebars.print = printer.print;\n\nmodule.exports = handlebars;\n\n// Publish a Node.js require() handler for .handlebars and .hbs files\nfunction extension(module, filename) {\n var fs = require('fs');\n var templateString = fs.readFileSync(filename, 'utf8');\n module.exports = handlebars.compile(templateString);\n}\n/* istanbul ignore else */\nif (typeof require !== 'undefined' && require.extensions) {\n require.extensions['.handlebars'] = extension;\n require.extensions['.hbs'] = extension;\n}\n","import fs, { readFileSync, writeFileSync } from 'fs'\nimport chalk from 'chalk'\nimport { AbiTypeGen, IFile, IFunction, ProgramTypeEnum } from '@fuel-ts/abi-typegen'\nimport mkdirp from 'mkdirp'\nimport path from 'path'\nimport { upperFirst } from './utils.js'\nimport { versions as builtinVersions } from '@fuel-ts/versions'\n\nexport async function codegen(abisDir: string, outDir: string) {\n if (!fs.existsSync(abisDir)) {\n return\n }\n\n const numFiles = await codegenInternal(abisDir, outDir)\n console.log(chalk.green(`Generated ${numFiles} files for Fuel`))\n}\n\nfunction patchImport(contents: string) {\n return contents.replace(/from\\s+['\"](\\..+)['\"]/g, `from '\\$1.js'`)\n}\n\n/*function patchEnumType(contents: string) {\n const matches = contents.matchAll(/export type (.+) = Enum<{ Ok: T, Err: E }>;/g)\n\n for (const m of matches) {\n const vname = m[1]\n contents = contents.replace(m[0], `export type ${vname}<T,E> = Enum<{ Ok: T, Err: E }>;`)\n\n const reg = new RegExp(`export type (.+) = ${vname}`, 'g')\n contents = contents.replace(reg, `export type \\$1<T,E> = ${vname}<T,E>`)\n }\n return contents\n}*/\n\nasync function codegenInternal(abisDir: string, outDir: string): Promise<number> {\n const allFiles = fs.readdirSync(abisDir)\n if (allFiles.length === 0) {\n return 0\n }\n\n const allABIFiles = []\n for (const f of allFiles) {\n if (f.toLowerCase().endsWith('-abi.json')) {\n allABIFiles.push(path.join(abisDir, f))\n }\n }\n if (allABIFiles.length === 0) {\n return 0\n }\n const abiFiles = allABIFiles.map((filepath) => {\n const abi: IFile = {\n path: filepath,\n contents: readFileSync(filepath, 'utf-8')\n }\n return abi\n })\n\n // fuels type gen\n const abiTypeGen = new AbiTypeGen({\n abiFiles,\n binFiles: [],\n storageSlotsFiles: [],\n outputDir: outDir,\n programType: ProgramTypeEnum.CONTRACT,\n versions: { FUELS: builtinVersions.FUELS }\n })\n\n mkdirp.sync(outDir)\n let count = 0\n abiTypeGen.files.forEach((file) => {\n if (!file.path.endsWith('.hex.ts')) {\n const content = patchImport(file.contents)\n // content = patchEnumType(content)\n writeFileSync(file.path, content)\n count++\n }\n })\n\n // for (const file of abiTypeGen.files) {\n // const jsonAbi: JsonAbi = JSON.parse(file.contents)\n // for (const logType of jsonAbi.loggedTypes) {\n // logType.loggedType.name\n //\n // }\n // }\n\n for (const abi of abiTypeGen.abis) {\n const name = abi.capitalizedName.endsWith('Abi') ? abi.capitalizedName.slice(0, -3) : abi.capitalizedName\n const filePath = path.join(outDir, `${name}Processor.ts`)\n const importedTypes = collectImportedTypes(abi.types)\n\n const logByTypes: Record<string, string[]> = {}\n\n for (const logType of abi.rawContents.loggedTypes) {\n const metadataTypeId = abi.rawContents.concreteTypes.find(\n (t) => t.concreteTypeId == logType.concreteTypeId\n )?.metadataTypeId\n // @ts-ignore - we know that the type is in the abi\n let t = abi.types.find((t) => t.rawAbiType.concreteTypeId == logType.concreteTypeId)\n if (!t) {\n t = abi.types.find((t) => t.rawAbiType.typeId == metadataTypeId)\n }\n // @ts-ignore - we know that the type is in the abi\n const typeName = t?.attributes?.outputLabel\n if (typeName) {\n if (!logByTypes[typeName]) {\n logByTypes[typeName] = []\n }\n logByTypes[typeName].push(logType.logId)\n }\n }\n\n const content = `/* Autogenerated file. Do not edit manually. */\n\n/* tslint:disable */\n/* eslint-disable */\n \nimport { FuelAbstractProcessor, FuelContext, FuelProcessorConfig, TypedCall, FuelFetchConfig, FuelCall, FuelLog} from '@sentio/sdk/fuel'\nimport {${abi.commonTypesInUse.join(',')}} from './common.js'\nimport {${importedTypes.join(',')}, ${abi.capitalizedName}} from './${abi.capitalizedName}.js'\n\nimport type { BigNumberish, BN } from 'fuels';\nimport type { BytesLike, Bytes } from 'fuels';\n\n\nnamespace ${name}NS {\n export abstract class CallWithLogs<T extends Array<any>, R> extends TypedCall<T, R> {\n${Object.entries(logByTypes)\n .flatMap(([t, ids]) => {\n const s = []\n s.push(`\n getLogsOfType${getTypeName(t)}(): Array<${t}> {\n return this.logs?.filter(l =>[${ids.map((id) => `\"${id}\"`).join(', ')}].includes(l.logId) ).map(l => l.data) as Array<${t}>\n }`)\n\n return s\n })\n .join('\\n')}\n }\n\n${\n ''\n // abi.functions.map(genCallType).join('\\n')\n}\n}\n\nexport class ${name}Processor extends FuelAbstractProcessor {\n constructor(config?: FuelProcessorConfig) {\n super(${abi.capitalizedName}.abi, config)\n }\n \n static bind(config: FuelProcessorConfig) {\n return new ${name}Processor({\n name: '${name}',\n ...config,\n })\n }\n\n${\n ''\n /* disable codegen for now\n abi.functions.map((f) => genOnCallFunction(name, f)).join('\\n') */\n} \n\n${Object.entries(logByTypes).map(genOnLogFunction).join('\\n')}\n\n}\n`\n writeFileSync(filePath, content)\n count++\n }\n\n return count\n}\n\nfunction genCallType(f: IFunction) {\n const name = upperFirst(f.name)\n const argMap: Record<string, string> = {}\n const argTypes = f.attributes.inputs.split(',').map((t) => t.trim())\n f.rawAbiFunction.inputs.forEach((input, idx) => {\n argMap[input.name] = argTypes[idx]\n })\n\n return `\n export class ${name}Call extends CallWithLogs<[${argTypes.join(', ')}], ${f.attributes.output}> {\n declare args: [${argTypes.join(', ')}]\n declare returnValue: ${f.attributes.output}\n declare argsObject: {\n ${Object.entries(argMap)\n .map(([k, v]) => `${k}: ${v}`)\n .join(', ')}\n } \n constructor(call: FuelCall) {\n super(call)\n }\n }\n`\n}\n\nfunction genOnCallFunction(contractName: string, f: IFunction) {\n const name = upperFirst(f.name)\n return `\n onCall${name}(handler: (call: ${contractName}.${name}Call, ctx: FuelContext) => void | Promise<void>, config?: FuelFetchConfig) {\n return super.onCall('${f.name}', (call, ctx) => handler(new ${contractName}.${name}Call(call), ctx), config)\n }`\n}\n\nfunction collectImportedTypes(types: any[]): string[] {\n const ret = new Set<string>()\n for (const type of types) {\n if ((type && type.name == 'struct') || type.name == 'enum') {\n ret.add(type.attributes.inputLabel)\n ret.add(type.attributes.outputLabel)\n }\n }\n\n return Array.from(ret)\n}\n\nfunction genOnLogFunction([type, ids]: [string, string[]]) {\n const name = getTypeName(type)\n return `\n onLog${name}(handler: (log: FuelLog<${type}>, ctx: FuelContext) => void | Promise<void>, logIdFilter?: string | string[]) {\n return super.onLog<${type}>(logIdFilter ?? [${ids.map((id) => `\"${id}\"`).join(', ')}], (log, ctx) => handler(log, ctx))\n }`\n}\n\nfunction getTypeName(type: string) {\n return upperFirst(type.replace('Output', ''))\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport { Abi } from './abi/Abi';\nimport { ProgramTypeEnum } from './types/enums/ProgramTypeEnum';\nimport type { IFile } from './types/interfaces/IFile';\nimport { assembleContracts } from './utils/assembleContracts';\nimport { assemblePredicates } from './utils/assemblePredicates';\nimport { assembleScripts } from './utils/assembleScripts';\nimport { validateBinFile } from './utils/validateBinFile';\n\n/*\n Manages many instances of Abi\n*/\nexport class AbiTypeGen {\n public readonly abis: Abi[];\n public readonly abiFiles: IFile[];\n public readonly binFiles: IFile[];\n public readonly storageSlotsFiles: IFile[];\n public readonly outputDir: string;\n public readonly files: IFile[];\n public readonly versions: BinaryVersions;\n\n constructor(params: {\n abiFiles: IFile[];\n binFiles: IFile[];\n storageSlotsFiles: IFile[];\n outputDir: string;\n programType: ProgramTypeEnum;\n versions: BinaryVersions;\n }) {\n const { abiFiles, binFiles, outputDir, programType, storageSlotsFiles, versions } = params;\n\n this.outputDir = outputDir;\n\n this.abiFiles = abiFiles;\n this.binFiles = binFiles;\n this.storageSlotsFiles = storageSlotsFiles;\n this.versions = versions;\n\n // Creates a `Abi` for each abi file\n this.abis = this.abiFiles.map((abiFile) => {\n const binFilepath = abiFile.path.replace('-abi.json', '.bin');\n const relatedBinFile = this.binFiles.find(({ path }) => path === binFilepath);\n\n const storageSlotFilepath = abiFile.path.replace('-abi.json', '-storage_slots.json');\n const relatedStorageSlotsFile = this.storageSlotsFiles.find(\n ({ path }) => path === storageSlotFilepath\n );\n\n if (!relatedBinFile) {\n validateBinFile({\n abiFilepath: abiFile.path,\n binExists: !!relatedBinFile,\n binFilepath,\n programType,\n });\n }\n\n const abi = new Abi({\n filepath: abiFile.path,\n rawContents: JSON.parse(abiFile.contents as string),\n hexlifiedBinContents: relatedBinFile?.contents,\n storageSlotsContents: relatedStorageSlotsFile?.contents,\n outputDir,\n programType,\n });\n\n return abi;\n });\n\n // Assemble list of files to be written to disk\n this.files = this.getAssembledFiles({ programType });\n }\n\n private getAssembledFiles(params: { programType: ProgramTypeEnum }): IFile[] {\n const { abis, outputDir, versions } = this;\n const { programType } = params;\n\n switch (programType) {\n case ProgramTypeEnum.CONTRACT:\n return assembleContracts({ abis, outputDir, versions });\n case ProgramTypeEnum.SCRIPT:\n return assembleScripts({ abis, outputDir, versions });\n case ProgramTypeEnum.PREDICATE:\n return assemblePredicates({ abis, outputDir, versions });\n default:\n throw new FuelError(\n ErrorCode.INVALID_INPUT_PARAMETERS,\n `Invalid Typegen programType: ${programType}. Must be one of ${Object.values(\n ProgramTypeEnum\n )}`\n );\n }\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { normalizeString } from '@fuel-ts/utils';\n\nimport type { ProgramTypeEnum } from '../types/enums/ProgramTypeEnum';\nimport type { IConfigurable } from '../types/interfaces/IConfigurable';\nimport type { IFunction } from '../types/interfaces/IFunction';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiOld } from '../types/interfaces/JsonAbi';\nimport type { JsonAbi } from '../types/interfaces/JsonAbiNew';\nimport { parseFunctions } from '../utils/parseFunctions';\nimport { parseTypes } from '../utils/parseTypes';\nimport { transpileAbi } from '../utils/transpile-abi';\n\nimport { Configurable } from './configurable/Configurable';\n\n/*\n Manages many instances of Types and Functions\n*/\nexport class Abi {\n public capitalizedName: string;\n public camelizedName: string;\n public programType: ProgramTypeEnum;\n\n public filepath: string;\n public outputDir: string;\n\n public commonTypesInUse: string[] = [];\n\n public rawContents: JsonAbi;\n public hexlifiedBinContents?: string;\n public storageSlotsContents?: string;\n\n public types: IType[];\n public functions: IFunction[];\n public configurables: IConfigurable[];\n\n constructor(params: {\n filepath: string;\n programType: ProgramTypeEnum;\n rawContents: JsonAbi;\n hexlifiedBinContents?: string;\n storageSlotsContents?: string;\n outputDir: string;\n }) {\n const {\n filepath,\n outputDir,\n rawContents,\n hexlifiedBinContents,\n programType,\n storageSlotsContents,\n } = params;\n\n const abiNameRegex = /([^/]+)-abi\\.json$/m;\n const abiName = filepath.match(abiNameRegex);\n\n const couldNotParseName = !abiName || abiName.length === 0;\n\n if (couldNotParseName) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n `Could not parse name from ABI file: ${filepath}.`\n );\n }\n\n this.programType = programType;\n this.capitalizedName = `${normalizeString(abiName[1])}`;\n this.camelizedName = this.capitalizedName.replace(/^./m, (x) => x.toLowerCase());\n\n this.filepath = filepath;\n this.rawContents = rawContents;\n this.hexlifiedBinContents = hexlifiedBinContents;\n this.storageSlotsContents = storageSlotsContents;\n this.outputDir = outputDir;\n\n const { types, functions, configurables } = this.parse();\n\n this.types = types;\n this.functions = functions;\n this.configurables = configurables;\n\n this.computeCommonTypesInUse();\n }\n\n parse() {\n const transpiled = transpileAbi(this.rawContents) as JsonAbiOld;\n const {\n types: rawAbiTypes,\n functions: rawAbiFunctions,\n configurables: rawAbiConfigurables,\n } = transpiled;\n\n const types = parseTypes({ rawAbiTypes });\n const functions = parseFunctions({ rawAbiFunctions, types });\n const configurables = rawAbiConfigurables.map(\n (rawAbiConfigurable) => new Configurable({ types, rawAbiConfigurable })\n );\n\n return {\n types,\n functions,\n configurables,\n };\n }\n\n computeCommonTypesInUse() {\n const customTypesTable: Record<string, string> = {\n option: 'Option',\n enum: 'Enum',\n vector: 'Vec',\n result: 'Result',\n };\n\n this.commonTypesInUse = [];\n\n Object.keys(customTypesTable).forEach((typeName) => {\n const isInUse = !!this.types.find((t) => t.name === typeName);\n\n if (isInUse) {\n const commonTypeLabel: string = customTypesTable[typeName];\n this.commonTypesInUse.push(commonTypeLabel);\n }\n });\n }\n}\n","import type { ITypeAttributes } from '../../types/interfaces/IType';\nimport type { JsonAbiType } from '../../types/interfaces/JsonAbi';\n\nexport class AType {\n public rawAbiType: JsonAbiType;\n public attributes: ITypeAttributes;\n public requiredFuelsMembersImports: string[];\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n this.rawAbiType = params.rawAbiType;\n this.attributes = {\n inputLabel: 'unknown',\n outputLabel: 'unknown',\n };\n this.requiredFuelsMembersImports = [];\n }\n}\n","import type { JsonAbiType } from '../..';\nimport type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class EmptyType extends AType implements IType {\n public static swayType = '()';\n\n public name = 'empty';\n\n static MATCH_REGEX: RegExp = /^\\(\\)$/m;\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n super(params);\n this.attributes = {\n inputLabel: 'undefined',\n outputLabel: 'void',\n };\n }\n\n static isSuitableFor(params: { type: string }) {\n return EmptyType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class OptionType extends AType implements IType {\n public static swayType = 'enum Option';\n\n public name = 'option';\n\n static MATCH_REGEX: RegExp = /^enum (std::option::)?Option$/m;\n\n static isSuitableFor(params: { type: string }) {\n return OptionType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Option`,\n outputLabel: `Option`,\n };\n return this.attributes;\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { IType } from '../types/interfaces/IType';\n\nexport function findType(params: { types: IType[]; typeId: number }) {\n const { types, typeId } = params;\n\n const foundType = types.find(({ rawAbiType: { typeId: tid } }) => tid === typeId);\n\n if (!foundType) {\n throw new FuelError(ErrorCode.TYPE_ID_NOT_FOUND, `Type ID not found: ${typeId}.`);\n }\n\n // ensure type attributes is always parsed\n foundType.parseComponentsAttributes({ types });\n\n return foundType;\n}\n","import { EmptyType } from '../abi/types/EmptyType';\nimport { OptionType } from '../abi/types/OptionType';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\n\nexport type FunctionInput<TArg extends JsonAbiArgument = JsonAbiArgument> = TArg & {\n isOptional: boolean;\n};\n\nexport const getFunctionInputs = (params: {\n types: IType[];\n inputs: readonly JsonAbiArgument[];\n}): Array<FunctionInput> => {\n const { types, inputs } = params;\n let isMandatory = false;\n\n return inputs.reduceRight((result, input) => {\n const type = findType({ types, typeId: input.type });\n const isTypeMandatory =\n !EmptyType.isSuitableFor({ type: type.rawAbiType.type }) &&\n !OptionType.isSuitableFor({ type: type.rawAbiType.type });\n\n isMandatory = isMandatory || isTypeMandatory;\n return [{ ...input, isOptional: !isMandatory }, ...result];\n }, [] as FunctionInput[]);\n};\n","import type { TargetEnum } from '../types/enums/TargetEnum';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\n\n/*\n Recursively parses the given `typeArguments` node\n*/\nexport function parseTypeArguments(params: {\n types: IType[];\n target: TargetEnum;\n typeArguments: readonly JsonAbiArgument[];\n parentTypeId?: number;\n}): string {\n const { types, typeArguments, parentTypeId, target } = params;\n\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n\n const buffer: string[] = [];\n\n let parentType: IType | undefined;\n let parentLabel: string | undefined;\n\n if (parentTypeId !== undefined) {\n parentType = findType({ types, typeId: parentTypeId });\n parentLabel = parentType.attributes[attributeKey];\n }\n\n // loop through all `typeArgument` items\n typeArguments.forEach((typeArgument) => {\n const currentTypeId = typeArgument.type;\n\n const currentType = findType({ types, typeId: currentTypeId });\n const currentLabel = currentType.attributes[attributeKey];\n\n if (typeArgument.typeArguments) {\n // recursively process nested `typeArguments`\n const nestedParsed = parseTypeArguments({\n types,\n target,\n parentTypeId: typeArgument.type,\n typeArguments: typeArgument.typeArguments as JsonAbiArgument[],\n });\n\n buffer.push(nestedParsed);\n } else {\n buffer.push(`${currentLabel}`);\n }\n });\n\n let output = buffer.join(', ');\n\n if (parentLabel) {\n output = `${parentLabel}<${output}>`;\n }\n\n return output;\n}\n","import { TargetEnum } from '../types/enums/TargetEnum';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\nimport { parseTypeArguments } from './parseTypeArguments';\n\nexport function resolveInputLabel(\n types: IType[],\n typeId: number,\n typeArguments: JsonAbiArgument['typeArguments']\n) {\n const type = findType({ types, typeId });\n\n let typeDecl: string;\n\n if (typeArguments?.length) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target: TargetEnum.INPUT,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n typeDecl = type.attributes.inputLabel;\n }\n\n return typeDecl;\n}\n","import type { IFunction, JsonAbiFunction, IFunctionAttributes } from '../../index';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { getFunctionInputs } from '../../utils/getFunctionInputs';\nimport { resolveInputLabel } from '../../utils/getTypeDeclaration';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nexport class Function implements IFunction {\n public name: string;\n public types: IType[];\n public rawAbiFunction: JsonAbiFunction;\n public attributes: IFunctionAttributes;\n\n constructor(params: { types: IType[]; rawAbiFunction: JsonAbiFunction }) {\n this.rawAbiFunction = params.rawAbiFunction;\n this.types = params.types;\n this.name = params.rawAbiFunction.name;\n\n this.attributes = {\n inputs: this.bundleInputTypes(),\n output: this.bundleOutputTypes(),\n prefixedInputs: this.bundleInputTypes(true),\n };\n }\n\n bundleInputTypes(shouldPrefixParams: boolean = false) {\n const { types } = this;\n\n // loop through all mandatory inputs\n const inputs = getFunctionInputs({ types, inputs: this.rawAbiFunction.inputs }).map(\n ({ isOptional, ...input }) => {\n const { name, type: typeId, typeArguments } = input;\n\n const typeDecl = resolveInputLabel(types, typeId, typeArguments);\n\n // assemble it in `[key: string]: <Type>` fashion\n if (shouldPrefixParams) {\n const optionalSuffix = isOptional ? '?' : '';\n return `${name}${optionalSuffix}: ${typeDecl}`;\n }\n\n return typeDecl;\n }\n );\n\n return inputs.join(', ');\n }\n\n bundleOutputTypes() {\n return parseTypeArguments({\n types: this.types,\n target: TargetEnum.OUTPUT,\n typeArguments: [this.rawAbiFunction.output],\n });\n }\n\n getDeclaration() {\n const { name } = this;\n const { prefixedInputs, output } = this.attributes;\n const decl = `${name}: InvokeFunction<[${prefixedInputs}], ${output}>`;\n return decl;\n }\n}\n","import { Function } from '../abi/functions/Function';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiFunction } from '../types/interfaces/JsonAbi';\n\nexport function makeFunction(params: { types: IType[]; rawAbiFunction: JsonAbiFunction }) {\n const { types, rawAbiFunction } = params;\n return new Function({ types, rawAbiFunction });\n}\n","import type { IFunction } from '../types/interfaces/IFunction';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiFunction } from '../types/interfaces/JsonAbi';\n\nimport { makeFunction } from './makeFunction';\n\nexport function parseFunctions(params: {\n types: IType[];\n rawAbiFunctions: readonly JsonAbiFunction[];\n}) {\n const { types, rawAbiFunctions } = params;\n const functions: IFunction[] = rawAbiFunctions.map((rawAbiFunction) =>\n makeFunction({ types, rawAbiFunction })\n );\n return functions;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nimport { supportedTypes } from './supportedTypes';\n\nexport function makeType(params: { rawAbiType: JsonAbiType }) {\n const { rawAbiType } = params;\n const { type } = rawAbiType;\n\n const TypeClass = supportedTypes.find((tc) => tc.isSuitableFor({ type }));\n\n if (!TypeClass) {\n throw new FuelError(ErrorCode.TYPE_NOT_SUPPORTED, `Type not supported: ${type}`);\n }\n\n return new TypeClass(params);\n}\n","import { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class ArrayType extends AType implements IType {\n // Note: the array length expressed in '; 2]' could be any length\n public static swayType = '[_; 2]';\n\n public name = 'array';\n\n static MATCH_REGEX: RegExp = /^\\[_; ([0-9]+)\\]$/m;\n\n static isSuitableFor(params: { type: string }) {\n return ArrayType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(params: { types: IType[] }) {\n const { types } = params;\n const { type } = this.rawAbiType;\n\n // array length will be used to generated a fixed-length array type\n const arrayLen = Number(type.match(ArrayType.MATCH_REGEX)?.[1]);\n\n const inputs: string[] = [];\n const outputs: string[] = [];\n\n this.rawAbiType.components?.forEach((component) => {\n const { type: typeId, typeArguments } = component;\n\n if (!typeArguments) {\n // if component has no type arguments, read its attributes and voilà\n const { attributes } = findType({ types, typeId });\n\n inputs.push(attributes.inputLabel);\n outputs.push(attributes.outputLabel);\n } else {\n // otherwise process child `typeArguments` recursively\n const inputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.INPUT,\n });\n\n const outputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.OUTPUT,\n });\n\n inputs.push(inputLabel);\n outputs.push(outputLabel);\n }\n });\n\n // fixed-length array, based on `arrayLen`\n const inputTypes = Array(arrayLen).fill(inputs[0]).join(', ');\n const outputTypes = Array(arrayLen).fill(outputs[0]).join(', ');\n\n this.attributes = {\n inputLabel: `[${inputTypes}]`,\n outputLabel: `[${outputTypes}]`,\n };\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StrType extends AType implements IType {\n // Note: the str length expressed in '[3]' could be any length\n public static swayType = 'str[3]';\n\n public name = 'str';\n\n static MATCH_REGEX: RegExp = /^str\\[(.+)\\]$/m;\n\n static isSuitableFor(params: { type: string }) {\n return StrType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: 'string',\n outputLabel: 'string',\n };\n return this.attributes;\n }\n}\n","import { StrType } from './StrType';\n\nexport class B256Type extends StrType {\n public static swayType = 'b256';\n\n public name = 'b256';\n\n static MATCH_REGEX = /^b256$/m;\n\n static isSuitableFor(params: { type: string }) {\n return B256Type.MATCH_REGEX.test(params.type);\n }\n}\n","import { B256Type } from './B256Type';\n\nexport class B512Type extends B256Type {\n public static swayType = 'struct B512';\n\n public name = 'b512';\n\n static MATCH_REGEX = /^struct (std::b512::)?B512$/m;\n\n static isSuitableFor(params: { type: string }) {\n return B512Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class BoolType extends AType implements IType {\n public static swayType = 'bool';\n\n public name = 'bool';\n\n static MATCH_REGEX: RegExp = /^bool$/m;\n\n static isSuitableFor(params: { type: string }) {\n return BoolType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: 'boolean',\n outputLabel: 'boolean',\n };\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class BytesType extends ArrayType {\n public static swayType = 'struct Bytes';\n\n public name = 'bytes';\n\n static MATCH_REGEX: RegExp = /^struct (std::bytes::)?Bytes/m;\n\n static isSuitableFor(params: { type: string }) {\n return BytesType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'Bytes';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nexport function extractStructName(params: { rawAbiType: JsonAbiType; regex: RegExp }) {\n const { rawAbiType, regex } = params;\n\n const matches = rawAbiType.type.match(regex);\n const match = matches?.[2] ?? matches?.[1];\n\n if (!match) {\n let errorMessage = `Couldn't extract struct name with: '${regex}'.\\n\\n`;\n errorMessage += `Check your JSON ABI.\\n\\n[source]\\n`;\n errorMessage += `${JSON.stringify(rawAbiType, null, 2)}`;\n\n throw new FuelError(ErrorCode.JSON_ABI_ERROR, errorMessage);\n }\n\n return match;\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class ResultType extends AType implements IType {\n public static swayType = 'enum Result';\n\n public name = 'result';\n\n static MATCH_REGEX: RegExp = /^enum (std::result::)?Result$/m;\n\n static isSuitableFor(params: { type: string }) {\n return ResultType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Result`,\n outputLabel: `Result`,\n };\n return this.attributes;\n }\n}\n","import type { JsonAbiArgument } from '../../index';\nimport type { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\nimport { EmptyType } from './EmptyType';\nimport { OptionType } from './OptionType';\nimport { ResultType } from './ResultType';\n\nexport class EnumType extends AType implements IType {\n public static swayType = 'enum MyEnumName';\n\n public name = 'enum';\n\n static MATCH_REGEX: RegExp = /^enum (.+::)?(.+)$/m;\n static IGNORE_REGEXES: RegExp[] = [OptionType.MATCH_REGEX, ResultType.MATCH_REGEX];\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = EnumType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = EnumType.IGNORE_REGEXES.some((r) => r.test(params.type));\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const structName = this.getStructName();\n\n this.attributes = {\n structName,\n inputLabel: `${structName}Input`,\n outputLabel: `${structName}Output`,\n };\n\n return this.attributes;\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: EnumType.MATCH_REGEX,\n });\n return name;\n }\n\n public getNativeEnum(params: { types: IType[] }) {\n const { types } = params;\n\n const typeHash: { [key: number]: IType['rawAbiType']['type'] } = types.reduce(\n (hash, row) => ({\n ...hash,\n [row.rawAbiType.typeId]: row.rawAbiType.type,\n }),\n {}\n );\n\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const enumComponents = components as JsonAbiArgument[];\n\n if (!enumComponents.every(({ type }) => typeHash[type] === EmptyType.swayType)) {\n return undefined;\n }\n\n return enumComponents.map(({ name }) => `${name} = '${name}'`).join(', ');\n }\n\n public getStructContents(params: { types: IType[]; target: TargetEnum }) {\n const { types, target } = params;\n\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const enumComponents = components as JsonAbiArgument[];\n\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n\n const contents = enumComponents.map((component) => {\n const { name, type: typeId, typeArguments } = component;\n\n if (typeId === 0) {\n return `${name}: []`;\n }\n\n const type = findType({ types, typeId });\n let typeDecl: string;\n\n if (typeArguments) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n typeDecl = type.attributes[attributeKey];\n }\n\n return `${name}: ${typeDecl}`;\n });\n\n return contents.join(', ');\n }\n\n public getStructDeclaration(params: { types: IType[] }) {\n const { types } = params;\n const { typeParameters } = this.rawAbiType;\n\n if (typeParameters) {\n const structs = typeParameters.map((typeId) => findType({ types, typeId }));\n\n const labels = structs.map(({ attributes: { inputLabel } }) => inputLabel);\n\n return `<${labels.join(', ')}>`;\n }\n\n return '';\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class EvmAddressType extends AType implements IType {\n public static swayType = 'struct EvmAddress';\n\n public name = 'evmAddress';\n\n static MATCH_REGEX: RegExp = /^struct (std::vm::evm::evm_address::)?EvmAddress$/m;\n\n static isSuitableFor(params: { type: string }) {\n return EvmAddressType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'EvmAddress';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\n\nimport { AType } from './AType';\n\nexport class GenericType extends AType implements IType {\n public static swayType = 'generic T';\n\n public name = 'generic';\n\n static MATCH_REGEX: RegExp = /^generic ([^\\s]+)$/m;\n\n static isSuitableFor(params: { type: string }) {\n return GenericType.MATCH_REGEX.test(params.type);\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: GenericType.MATCH_REGEX,\n });\n return name;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const label = this.getStructName();\n\n this.attributes = {\n inputLabel: label,\n outputLabel: label,\n };\n\n return this.attributes;\n }\n}\n","import type { JsonAbiType } from '../../index';\nimport type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class U8Type extends AType implements IType {\n public static swayType = 'u8';\n\n public name = 'u8';\n\n public static MATCH_REGEX: RegExp = /^u8$/m;\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n super(params);\n this.attributes = {\n inputLabel: `BigNumberish`,\n outputLabel: `number`,\n };\n this.requiredFuelsMembersImports = [this.attributes.inputLabel];\n }\n\n static isSuitableFor(params: { type: string }) {\n return U8Type.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U64Type extends U8Type implements IType {\n public static swayType = 'u64';\n\n public name = 'u64';\n\n public static MATCH_REGEX: RegExp = /^u64$/m;\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `BigNumberish`,\n outputLabel: `BN`,\n };\n this.requiredFuelsMembersImports = Object.values(this.attributes);\n return this.attributes;\n }\n\n static isSuitableFor(params: { type: string }) {\n return U64Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U64Type } from './U64Type';\n\nexport class RawUntypedPtr extends U64Type implements IType {\n public static swayType = 'raw untyped ptr';\n\n public name = 'rawUntypedPtr';\n\n public static MATCH_REGEX: RegExp = /^raw untyped ptr$/m;\n\n static isSuitableFor(params: { type: string }) {\n return RawUntypedPtr.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class RawUntypedSlice extends ArrayType {\n public static swayType = 'raw untyped slice';\n\n public name = 'rawUntypedSlice';\n\n public static MATCH_REGEX: RegExp = /^raw untyped slice$/m;\n\n static isSuitableFor(params: { type: string }) {\n return RawUntypedSlice.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'RawSlice';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StdStringType extends AType implements IType {\n public static swayType = 'struct String';\n\n public name = 'stdString';\n\n static MATCH_REGEX: RegExp = /^struct (std::string::)?String/m;\n\n static isSuitableFor(params: { type: string }) {\n return StdStringType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'StdString';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StrSliceType extends AType implements IType {\n public static swayType = 'str';\n\n public name = 'strSlice';\n\n static MATCH_REGEX: RegExp = /^str$/m;\n\n static isSuitableFor(params: { type: string }) {\n return StrSliceType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'StrSlice';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { JsonAbiArgument } from '../../index';\nimport type { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class StructType extends AType implements IType {\n public static swayType = 'struct MyStruct';\n\n public name = 'struct';\n\n static MATCH_REGEX: RegExp = /^struct (.+::)?(.+)$/m;\n static IGNORE_REGEX: RegExp = /^struct (std::.*)?(Vec|RawVec|EvmAddress|Bytes|String|RawBytes)$/m;\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = StructType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = StructType.IGNORE_REGEX.test(params.type);\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const structName = this.getStructName();\n\n this.attributes = {\n structName,\n inputLabel: `${structName}Input`,\n outputLabel: `${structName}Output`,\n };\n\n return this.attributes;\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: StructType.MATCH_REGEX,\n });\n return name;\n }\n\n public getStructContents(params: { types: IType[]; target: TargetEnum }) {\n const { types, target } = params;\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const structComponents = components as JsonAbiArgument[];\n\n // loop through all components\n const members = structComponents.map((component) => {\n const { name, type: typeId, typeArguments } = component;\n\n const type = findType({ types, typeId });\n\n let typeDecl: string;\n\n if (typeArguments) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n typeDecl = type.attributes[attributeKey];\n }\n\n // assemble it in `[key: string]: <Type>` fashion\n return `${name}: ${typeDecl}`;\n });\n\n return members.join(', ');\n }\n\n public getStructDeclaration(params: { types: IType[] }) {\n const { types } = params;\n const { typeParameters } = this.rawAbiType;\n\n if (typeParameters) {\n const structs = typeParameters.map((typeId) => findType({ types, typeId }));\n\n const labels = structs.map(({ attributes: { inputLabel } }) => inputLabel);\n\n return `<${labels.join(', ')}>`;\n }\n\n return '';\n }\n}\n","import { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class TupleType extends AType implements IType {\n // Note: a tuple can have more/less than 3x items (like the one bellow)\n public static swayType = '(_, _, _)';\n\n public name = 'tupple';\n\n static MATCH_REGEX: RegExp = /^\\([_,\\s]+\\)$/m;\n\n static isSuitableFor(params: { type: string }) {\n return TupleType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(params: { types: IType[] }) {\n const { types } = params;\n\n const inputs: string[] = [];\n const outputs: string[] = [];\n\n this.rawAbiType.components?.forEach((component) => {\n const { type: typeId, typeArguments } = component;\n\n if (!typeArguments) {\n // if component has no type arguments, read its attributes and voilà\n const { attributes } = findType({ types, typeId });\n\n inputs.push(attributes.inputLabel);\n outputs.push(attributes.outputLabel);\n } else {\n // otherwise process child `typeArguments` recursively\n const inputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.INPUT,\n });\n\n const outputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.OUTPUT,\n });\n\n inputs.push(inputLabel);\n outputs.push(outputLabel);\n }\n });\n\n this.attributes = {\n inputLabel: `[${inputs.join(', ')}]`,\n outputLabel: `[${outputs.join(', ')}]`,\n };\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U16Type extends U8Type implements IType {\n public static swayType = 'u16';\n\n public name = 'u16';\n\n public static MATCH_REGEX: RegExp = /^u16$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U16Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U64Type } from './U64Type';\n\nexport class U256Type extends U64Type implements IType {\n public static swayType = 'u256';\n\n public name = 'u256';\n\n public static MATCH_REGEX: RegExp = /^u256$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U256Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U32Type extends U8Type implements IType {\n public static swayType = 'u32';\n\n public name = 'u32';\n\n public static MATCH_REGEX: RegExp = /^u32$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U32Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class VectorType extends ArrayType {\n public static swayType = 'struct Vec';\n\n public name = 'vector';\n\n static MATCH_REGEX: RegExp = /^struct (std::vec::)?Vec/m;\n static IGNORE_REGEX: RegExp = /^struct (std::vec::)?RawVec$/m;\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = VectorType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = VectorType.IGNORE_REGEX.test(params.type);\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Vec`,\n outputLabel: `Vec`,\n };\n return this.attributes;\n }\n}\n","import { ArrayType } from '../abi/types/ArrayType';\nimport { B256Type } from '../abi/types/B256Type';\nimport { B512Type } from '../abi/types/B512Type';\nimport { BoolType } from '../abi/types/BoolType';\nimport { BytesType } from '../abi/types/BytesType';\nimport { EmptyType } from '../abi/types/EmptyType';\nimport { EnumType } from '../abi/types/EnumType';\nimport { EvmAddressType } from '../abi/types/EvmAddressType';\nimport { GenericType } from '../abi/types/GenericType';\nimport { OptionType } from '../abi/types/OptionType';\nimport { RawUntypedPtr } from '../abi/types/RawUntypedPtr';\nimport { RawUntypedSlice } from '../abi/types/RawUntypedSlice';\nimport { ResultType } from '../abi/types/ResultType';\nimport { StdStringType } from '../abi/types/StdStringType';\nimport { StrSliceType } from '../abi/types/StrSliceType';\nimport { StrType } from '../abi/types/StrType';\nimport { StructType } from '../abi/types/StructType';\nimport { TupleType } from '../abi/types/TupleType';\nimport { U16Type } from '../abi/types/U16Type';\nimport { U256Type } from '../abi/types/U256Type';\nimport { U32Type } from '../abi/types/U32Type';\nimport { U64Type } from '../abi/types/U64Type';\nimport { U8Type } from '../abi/types/U8Type';\nimport { VectorType } from '../abi/types/VectorType';\n\nexport const supportedTypes = [\n EmptyType,\n ArrayType,\n B256Type,\n B512Type,\n BoolType,\n BytesType,\n EnumType,\n GenericType,\n OptionType,\n RawUntypedPtr,\n RawUntypedSlice,\n StdStringType,\n StrType,\n StrSliceType,\n StructType,\n TupleType,\n U16Type,\n U32Type,\n U64Type,\n U256Type,\n U8Type,\n VectorType,\n EvmAddressType,\n ResultType,\n];\n","export function shouldSkipAbiType(params: { type: string }) {\n const ignoreList = [\n 'struct RawVec',\n 'struct std::vec::RawVec',\n 'struct RawBytes',\n 'struct std::bytes::RawBytes',\n ];\n const shouldSkip = ignoreList.indexOf(params.type) >= 0;\n return shouldSkip;\n}\n","import type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nimport { makeType } from './makeType';\nimport { shouldSkipAbiType } from './shouldSkipAbiType';\n\nexport function parseTypes(params: { rawAbiTypes: readonly JsonAbiType[] }) {\n const types: IType[] = [];\n\n // First we parse all ROOT nodes\n params.rawAbiTypes.forEach((rawAbiType) => {\n const { type } = rawAbiType;\n const skip = shouldSkipAbiType({ type });\n if (!skip) {\n const parsedType = makeType({ rawAbiType });\n types.push(parsedType);\n }\n });\n\n // Then we parse all their components' [attributes]\n types.forEach((type) => {\n type.parseComponentsAttributes({ types });\n });\n\n return types;\n}\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable no-param-reassign */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nconst findTypeByConcreteId = (types, id) => types.find((x) => x.concreteTypeId === id);\n\nconst findConcreteTypeById = (abi, id) => abi.concreteTypes.find((x) => x.concreteTypeId === id);\n\nfunction finsertTypeIdByConcreteTypeId(abi, types, id) {\n const concreteType = findConcreteTypeById(abi, id);\n\n if (concreteType.metadataTypeId !== undefined) {\n return concreteType.metadataTypeId;\n }\n\n const type = findTypeByConcreteId(types, id);\n if (type) {\n return type.typeId;\n }\n\n types.push({\n typeId: types.length,\n type: concreteType.type,\n components: parseComponents(concreteType.components),\n concreteTypeId: id,\n typeParameters: concreteType.typeParameters ?? null,\n originalConcreteTypeId: concreteType?.concreteTypeId,\n });\n\n return types.length - 1;\n}\n\nfunction parseFunctionTypeArguments(abi, types, concreteType) {\n return (\n concreteType.typeArguments?.map((cTypeId) => {\n const self = findConcreteTypeById(abi, cTypeId);\n const type = !isNaN(cTypeId) ? cTypeId : finsertTypeIdByConcreteTypeId(abi, types, cTypeId);\n return {\n name: '',\n type,\n // originalTypeId: cTypeId,\n typeArguments: parseFunctionTypeArguments(abi, types, self),\n };\n }) ?? null\n );\n}\n\nexport function parseConcreteType(abi, types, concreteTypeId, name) {\n const type = finsertTypeIdByConcreteTypeId(abi, types, concreteTypeId);\n const concrete = findConcreteTypeById(abi, concreteTypeId);\n return {\n name: name ?? '',\n type,\n // concreteTypeId,\n typeArguments: parseFunctionTypeArguments(abi, types, concrete),\n };\n}\n\nfunction parseComponents(abi, types, components) {\n return (\n components?.map((component) => {\n const { typeId, name, typeArguments } = component;\n const type = !isNaN(typeId) ? typeId : finsertTypeIdByConcreteTypeId(abi, types, typeId);\n return {\n name,\n type,\n // originalTypeId: typeId,\n typeArguments: parseComponents(abi, types, typeArguments),\n };\n }) ?? null\n );\n}\n\n/**\n * This will transpile new ABIs (spec: \"1\") to the old format.\n *\n * The new format got these new props:\n * - `specVersion`,\n * - `concreteTypes`\n * - `metadataTypes`\n *\n * The old format contains only:\n * - `types`\n */\nexport function transpileAbi(abi) {\n // do not transpile older versions\n if (!abi.specVersion) {\n return abi;\n }\n\n // 0. define empty types array\n const types = [];\n\n // 1. root level of metadata types\n abi.metadataTypes.forEach((m) => {\n const t = {\n typeId: m.metadataTypeId,\n type: m.type,\n components: m.components ?? (m.type === '()' ? [] : null),\n typeParameters: m.typeParameters ?? null,\n };\n types.push(t);\n });\n\n // 2. the metadata's components\n types.forEach((t) => {\n t.components = parseComponents(abi, types, t.components);\n });\n\n // 3. functions inputs/outputs\n const functions = abi.functions.map((fn) => {\n const inputs = fn.inputs.map(({ concreteTypeId, name }) =>\n parseConcreteType(abi, types, concreteTypeId, name)\n );\n const output = parseConcreteType(abi, types, fn.output, '');\n return { ...fn, inputs, output };\n });\n\n // 4. configurables\n const configurables = abi.configurables.map((conf) => ({\n name: conf.name,\n configurableType: parseConcreteType(abi, types, conf.concreteTypeId),\n offset: conf.offset,\n }));\n\n // 5. loggedTypes\n const loggedTypes = abi.loggedTypes.map((log) => ({\n logId: log.logId,\n loggedType: parseConcreteType(abi, types, log.concreteTypeId),\n }));\n\n // transpiled ABI\n const transpiled = {\n encoding: abi.encodingVersion,\n types,\n functions,\n loggedTypes,\n messagesTypes: abi.messagesTypes,\n configurables,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transpiled as any;\n}\n","import type { IConfigurable } from '../../types/interfaces/IConfigurable';\nimport type { IType } from '../../types/interfaces/IType';\nimport type { JsonAbiConfigurable } from '../../types/interfaces/JsonAbi';\nimport { resolveInputLabel } from '../../utils/getTypeDeclaration';\n\nexport class Configurable implements IConfigurable {\n public name: string;\n public inputLabel: string;\n\n constructor(params: { types: IType[]; rawAbiConfigurable: JsonAbiConfigurable }) {\n const {\n types,\n rawAbiConfigurable: {\n name,\n configurableType: { type, typeArguments },\n },\n } = params;\n\n this.name = name;\n\n this.inputLabel = resolveInputLabel(types, type, typeArguments);\n }\n}\n","export enum ProgramTypeEnum {\n CONTRACT = 'contract',\n SCRIPT = 'script',\n PREDICATE = 'predicate',\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderFactoryTemplate } from '../templates/contract/factory';\nimport { renderMainTemplate } from '../templates/contract/main';\n\n/**\n * Render all Contract-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assembleContracts(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName } = abi;\n\n const mainFilepath = `${outputDir}/${capitalizedName}.ts`;\n const factoryFilepath = `${outputDir}/${capitalizedName}Factory.ts`;\n\n const main: IFile = {\n path: mainFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderFactoryTemplate({ abi, versions }),\n };\n\n files.push(main);\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport Handlebars from 'handlebars';\n\nimport headerTemplate from './common/_header.hbs';\n\n/*\n Renders the given template w/ the given data, while injecting common\n header for disabling lint rules and annotating Fuel component's versions.\n*/\nexport function renderHbsTemplate(params: {\n template: string;\n versions: BinaryVersions;\n data?: Record<string, unknown>;\n}) {\n const { data, template, versions } = params;\n\n const options = {\n strict: true,\n noEscape: true,\n };\n\n const renderTemplate = Handlebars.compile(template, options);\n const renderHeaderTemplate = Handlebars.compile(headerTemplate, options);\n\n const text = renderTemplate({\n ...data,\n header: renderHeaderTemplate(versions),\n });\n\n return text.replace(/[\\n]{3,}/gm, '\\n\\n');\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport commonTemplate from './common.hbs';\n\nexport function renderCommonTemplate(params: { versions: BinaryVersions }) {\n const { versions } = params;\n const text = renderHbsTemplate({ template: commonTemplate, versions });\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { IFile } from '../../types/interfaces/IFile';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport indexTemplate from './index.hbs';\n\nexport function renderIndexTemplate(params: {\n files: Pick<IFile, 'path'>[];\n versions: BinaryVersions;\n}) {\n const { files, versions } = params;\n\n const members = files.map((f) => f.path.match(/([^/]+)\\.ts$/m)?.[1]);\n\n const text = renderHbsTemplate({\n template: indexTemplate,\n versions,\n data: {\n members,\n },\n });\n\n return text;\n}\n","import { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport factoryTemplate from './factory.hbs';\n\nexport function renderFactoryTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { versions, abi } = params;\n const {\n camelizedName,\n capitalizedName,\n rawContents,\n storageSlotsContents,\n hexlifiedBinContents: hexlifiedBinString,\n } = abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n const storageSlotsJsonString = storageSlotsContents ?? '[]';\n\n const text = renderHbsTemplate({\n template: factoryTemplate,\n versions,\n data: {\n camelizedName,\n capitalizedName,\n abiJsonString,\n storageSlotsJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n },\n });\n\n return text;\n}\n","import type { EnumType } from '../../abi/types/EnumType';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\n\nexport function formatEnums(params: { types: IType[] }) {\n const { types } = params;\n\n const enums = types\n .filter((t) => t.name === 'enum')\n .map((t) => {\n const et = t as EnumType; // only enums here\n const structName = et.getStructName();\n const inputValues = et.getStructContents({ types, target: TargetEnum.INPUT });\n const outputValues = et.getStructContents({ types, target: TargetEnum.OUTPUT });\n const inputNativeValues = et.getNativeEnum({ types });\n const outputNativeValues = et.getNativeEnum({ types });\n const typeAnnotations = et.getStructDeclaration({ types });\n\n return {\n structName,\n inputValues,\n outputValues,\n recycleRef: inputValues === outputValues, // reduces duplication\n inputNativeValues,\n outputNativeValues,\n typeAnnotations,\n };\n })\n .sort((a, b) => (a.structName < b.structName ? -1 : 1));\n\n return { enums };\n}\n","import { uniq } from 'ramda';\n\nimport type { IType } from '../../types/interfaces/IType';\n\nconst caseInsensitiveSort = (a: string, b: string) =>\n a.toLowerCase().localeCompare(b.toLowerCase());\n\nexport function formatImports(params: { types: IType[]; baseMembers?: string[] }) {\n const { types, baseMembers = [] } = params;\n\n const members = types.flatMap((t) => t.requiredFuelsMembersImports);\n const imports = uniq(baseMembers.concat(members).sort(caseInsensitiveSort));\n\n return {\n imports: imports.length ? imports : undefined,\n };\n}\n","import type { StructType } from '../../abi/types/StructType';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\n\nexport function formatStructs(params: { types: IType[] }) {\n const { types } = params;\n\n const structs = types\n .filter((t) => t.name === 'struct')\n .map((t) => {\n const st = t as StructType; // only structs here\n const structName = st.getStructName();\n const inputValues = st.getStructContents({ types, target: TargetEnum.INPUT });\n const outputValues = st.getStructContents({ types, target: TargetEnum.OUTPUT });\n const typeAnnotations = st.getStructDeclaration({ types });\n return {\n structName,\n typeAnnotations,\n inputValues,\n outputValues,\n recycleRef: inputValues === outputValues, // reduces duplication\n };\n })\n .sort((a, b) => (a.structName < b.structName ? -1 : 1));\n\n return { structs };\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { versions, abi } = params;\n const { camelizedName, capitalizedName, types, functions, commonTypesInUse, configurables } = abi;\n\n /*\n First we format all attributes\n */\n const functionsTypedefs = functions.map((f) => f.getDeclaration());\n\n const functionsFragments = functions.map((f) => f.name);\n\n const encoders = functions.map((f) => ({\n functionName: f.name,\n input: f.attributes.inputs,\n }));\n\n const decoders = functions.map((f) => ({\n functionName: f.name,\n }));\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['FunctionFragment', 'InvokeFunction'],\n });\n\n const { rawContents, storageSlotsContents } = params.abi;\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n const storageSlotsJsonString = storageSlotsContents ?? '[]';\n\n /*\n And finally render template\n */\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n camelizedName,\n capitalizedName,\n commonTypesInUse: commonTypesInUse.join(', '),\n functionsTypedefs,\n functionsFragments,\n encoders,\n decoders,\n structs,\n enums,\n imports,\n abiJsonString,\n storageSlotsJsonString,\n configurables,\n },\n });\n\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderMainTemplate } from '../templates/predicate/main';\n\n/**\n * Render all Predicate-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assemblePredicates(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName: name } = abi;\n\n const factoryFilepath = `${outputDir}/${name}.ts`;\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { abi, versions } = params;\n\n const { types, configurables } = abi;\n\n const {\n rawContents,\n capitalizedName,\n hexlifiedBinContents: hexlifiedBinString,\n commonTypesInUse,\n } = params.abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n\n const func = abi.functions.find((f) => f.name === 'main');\n\n if (!func) {\n throw new FuelError(ErrorCode.ABI_MAIN_METHOD_MISSING, `ABI doesn't have a 'main()' method.`);\n }\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['Predicate', 'Provider', 'InputValue', 'PredicateParams', 'decompressBytecode'],\n });\n\n const { prefixedInputs: inputs, output } = func.attributes;\n\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n inputs,\n output,\n structs,\n enums,\n abiJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n capitalizedName,\n imports,\n configurables,\n commonTypesInUse: commonTypesInUse.join(', '),\n },\n });\n\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderMainTemplate } from '../templates/script/main';\n\n/**\n * Render all Script-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assembleScripts(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName } = abi;\n\n const factoryFilepath = `${outputDir}/${capitalizedName}.ts`;\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { abi, versions } = params;\n\n const { types, configurables } = abi;\n\n const {\n rawContents,\n capitalizedName,\n hexlifiedBinContents: hexlifiedBinString,\n commonTypesInUse,\n } = params.abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n\n const func = abi.functions.find((f) => f.name === 'main');\n\n if (!func) {\n throw new FuelError(ErrorCode.ABI_MAIN_METHOD_MISSING, `ABI doesn't have a 'main()' method.`);\n }\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['Script', 'Account', 'decompressBytecode'],\n });\n\n const { prefixedInputs: inputs, output } = func.attributes;\n\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n inputs,\n output,\n structs,\n enums,\n abiJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n capitalizedName,\n imports,\n configurables,\n commonTypesInUse: commonTypesInUse.join(', '),\n },\n });\n\n return text;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport { ProgramTypeEnum } from '../types/enums/ProgramTypeEnum';\n\nconst upperFirst = (s: string): string => s[0].toUpperCase() + s.slice(1);\n\nexport function validateBinFile(params: {\n abiFilepath: string;\n binFilepath: string;\n binExists: boolean;\n programType: ProgramTypeEnum;\n}) {\n const { abiFilepath, binFilepath, binExists, programType } = params;\n\n const isScript = programType === ProgramTypeEnum.SCRIPT;\n\n if (!binExists && isScript) {\n throw new FuelError(\n ErrorCode.BIN_FILE_NOT_FOUND,\n [\n `Could not find BIN file for counterpart ${upperFirst(programType)} ABI.`,\n ` - ABI: ${abiFilepath}`,\n ` - BIN: ${binFilepath}`,\n programType,\n ].join('\\n')\n );\n }\n}\n","export function upperFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n"],"mappings":"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GAAG,KAAK,EAC3e,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG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EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,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","names":["escape","badChars","possible","escapeChar","chr","extend","obj","i","key","toString","isFunction","value","exports","isArray","indexOf","array","len","escapeExpression","string","isEmpty","createFrame","object","frame","blockParams","params","ids","appendContextPath","contextPath","id","errorProps","Exception","message","node","loc","line","endLineNumber","column","endColumn","tmp","idx","instance","context","options","inverse","fn","_utils","data","instance","context","options","_exception2","fn","inverse","ret","data","contextPath","_utils","execIteration","field","index","last","j","newContext","iterator","it","priorKey","key","instance","_exception2","instance","conditional","options","_exception2","_utils","instance","args","options","i","level","instance","obj","field","options","instance","context","options","_exception2","_utils","fn","data","registerDefaultHelpers","instance","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","instance","fn","props","container","options","ret","context","original","_utils","registerDefaultDecorators","instance","_decoratorsInline2","logger","level","levelMap","_utils","method","message","_len","_key","createNewLookupObject","sources","_len","_key","_utils","loggedProperties","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","_createNewLookupObject","resultIsAllowed","result","protoAccessControl","propertyName","checkWhiteList","protoAccessControlForType","logUnexpecedPropertyAccessOnce","_logger2","resetLoggedProperties","VERSION","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","HandlebarsEnvironment","helpers","partials","decorators","_helpers","_decorators","_logger2","name","fn","_utils","_exception2","partial","_internalProtoAccess","log","SafeString","string","wrapHelper","helper","transformOptionsFn","wrapper","options","Utils","_interopRequireWildcard","_utils","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","_exception2","template","templateSpec","env","templateWasPrecompiledWithCompilerV7","invokePartialWrapper","partial","context","options","extendedOptions","result","lines","i","l","container","obj","name","loc","parent","propertyName","_internalProtoAccess","depths","len","current","ret","data","declaredBlockParams","blockParams","programWrapper","fn","wrapProgram","value","depth","param","common","initData","main","executeDecorators","mergedHelpers","wrapHelpersToPassLookupProperty","keepHelperInHelpers","_helpers","prog","currentDepths","resolvePartial","invokePartial","currentPartialBlock","partialBlock","noop","props","helperName","helper","passLookupPropertyOption","lookupProperty","_internalWrapHelper","Handlebars","$Handlebars","base","_interopRequireWildcard","_handlebarsBase","Utils","_handlebarsUtils","runtime","_handlebarsRuntime","create","hb","_handlebarsSafeString2","_handlebarsException2","spec","inst","_handlebarsNoConflict2","AST","node","path","handlebars","parser","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","inverse","program","str","hash","input","self","stack","vstack","lstack","table","recovering","TERROR","EOF","yyloc","ranges","popStack","n","lex","token","symbol","preErrorSymbol","state","action","a","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","tempMatch","index","col","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","strip","start","end","YYSTATE","Parser","exports","Visitor","node","name","value","_exception2","array","i","l","object","ret","program","visitSubExpression","visitBlock","visitPartial","partial","hash","pair","mustache","block","WhitespaceControl","options","_visitor2","program","doStandalone","isRoot","body","i","l","current","strip","_isPrevWhitespace","isPrevWhitespace","_isNextWhitespace","isNextWhitespace","openStandalone","closeStandalone","inlineStandalone","omitRight","omitLeft","block","inverse","firstInverse","lastInverse","inverseStrip","mustache","node","prev","sibling","next","multiple","original","validateClose","open","close","errorNode","_exception2","SourceLocation","source","locInfo","id","token","stripFlags","stripComment","comment","preparePath","data","parts","loc","original","dig","depth","i","l","part","isLiteral","prepareMustache","path","params","hash","strip","escapeFlag","escaped","decorator","prepareRawBlock","openRawBlock","contents","program","prepareBlock","openBlock","inverseAndProgram","inverted","inverse","inverseStrip","prepareProgram","statements","firstLoc","lastLoc","preparePartialBlock","Helpers","_interopRequireWildcard","_helpers","_parser2","yy","_utils","parseWithoutProcessing","input","options","locInfo","ast","parse","strip","_whitespaceControl2","slice","Compiler","other","len","i","opcode","otherOpcode","argEquals","program","options","_utils","childCompiler","result","guid","node","_exception2","ret","body","bodyLength","block","transformLiteralToPath","inverse","type","decorator","params","path","partial","partialName","isDynamic","indent","partialBlock","mustache","content","sexpr","name","isBlock","_ast2","scoped","blockParamId","string","number","bool","hash","pairs","l","depth","isSimple","isBlockParam","isHelper","isEligible","_name","val","value","blockParamIndex","blockParamChild","omitEmpty","blockParams","param","precompile","input","env","ast","environment","compile","compiled","compileInput","templateSpec","context","execOptions","setupOptions","data","depths","a","b","literal","require_base64","__commonJSMin","exports","intToCharMap","number","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","require_base64_vlq","__commonJSMin","exports","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encoded","digit","vlq","aStr","aIndex","aOutParam","strLen","result","shift","continuation","require_util","__commonJSMin","exports","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","urlGenerate","aParsedUrl","url","normalize","aPath","path","isAbsolute","parts","part","up","i","join","aRoot","aPathUrl","aRootUrl","joined","relative","level","index","supportsNullProto","obj","identity","s","toSetString","aStr","isProtoString","fromSetString","length","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","strcmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","aStr1","aStr2","compareByGeneratedPositionsInflated","parseSourceMapInput","str","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","require_array_set","__commonJSMin","exports","util","has","hasNativeMap","ArraySet","aArray","aAllowDuplicates","set","i","len","aStr","sStr","isDuplicate","idx","aIdx","require_mapping_list","__commonJSMin","exports","util","generatedPositionAfter","mappingA","mappingB","lineA","lineB","columnA","columnB","MappingList","aCallback","aThisArg","aMapping","require_source_map_generator","__commonJSMin","exports","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","aArgs","aSourceMapConsumer","sourceRoot","generator","mapping","newMapping","sourceFile","sourceRelative","content","generated","original","source","name","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aSource","aName","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","next","nameIdx","sourceIdx","mappings","i","len","aSources","aSourceRoot","key","map","require_binary_search","__commonJSMin","exports","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","index","require_quick_sort","__commonJSMin","exports","swap","ary","x","y","temp","randomIntInRange","low","high","doQuickSort","comparator","p","r","pivotIndex","pivot","j","q","require_source_map_consumer","__commonJSMin","exports","util","binarySearch","ArraySet","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","aSourceMapURL","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","aStr","index","c","aSourceRoot","aCallback","aContext","aOrder","context","order","mappings","sourceRoot","mapping","source","aArgs","line","needle","originalLine","originalColumn","version","sources","names","sourcesContent","file","s","aSource","relativeSource","i","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","length","srcMapping","destMapping","Mapping","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","temp","originalMappings","str","segment","end","value","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","nextMapping","name","sc","nullOnMissing","url","fileUriAbsPath","sections","lastOffset","offset","offsetLine","offsetColumn","j","sectionIndex","section","cmp","content","generatedPosition","ret","sectionMappings","adjustedMapping","require_source_node","__commonJSMin","exports","SourceMapGenerator","util","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aSource","aChunks","aName","aGeneratedCode","aSourceMapConsumer","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastGeneratedColumn","lastMapping","mapping","addMappingWithCode","nextLine","code","sourceFile","content","source","aChunk","chunk","i","aFn","len","aSep","newChildren","aPattern","aReplacement","lastChild","aSourceFile","aSourceContent","sources","str","aArgs","generated","map","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","original","idx","length","sourceContent","require_source_map","__commonJSMin","exports","SourceNode","SourceMap","line","column","srcFile","chunks","_utils","castChunk","chunk","codeGen","loc","ret","i","len","CodeGen","source","iter","fn","type","params","str","obj","pairs","key","value","_this","entries","Literal","value","JavaScriptCompiler","parent","name","revision","_base","versions","source","location","explicit","_utils","environment","options","context","asObject","opcodes","opcode","firstLoc","i","l","_exception2","fn","ret","programs","_context","decorators","_codeGen2","varDeclarations","locals","aliasCount","alias","node","_this","params","isSimple","appendOnly","appendFirst","sourceSeen","bufferStart","bufferEnd","line","blockHelperMissing","blockName","current","content","local","depth","parts","falsy","strict","scoped","blockParamId","type","strictLookup","len","lookup","_this2","string","omitEmpty","hash","guid","paramSize","foundDecorator","nonHelper","helper","possibleFunctionCalls","functionLookupCode","functionCall","items","separator","result","helperCall","helperName","isDynamic","indent","key","id","child","children","compiler","existing","index","programParams","expr","item","callback","prefix","stack","createdStack","usedLiteral","top","_name","inlineStack","entry","wrapped","inline","str","obj","blockHelper","paramsInit","foundHelper","callContext","contexts","types","ids","objectArgs","param","inverse","program","useRegister","reservedWords","compilerWords","requireTerminal","_create","_handlebarsRuntime2","create","hb","input","options","_handlebarsCompilerCompiler","_handlebarsCompilerAst2","_handlebarsCompilerJavascriptCompiler2","_handlebarsCompilerBase","inst","_handlebarsNoConflict2","_handlebarsCompilerVisitor2","print","ast","PrintVisitor","_visitor2","string","out","i","l","program","body","blockParams","mustache","block","partial","content","comment","sexpr","params","paramStrings","hash","id","path","number","bool","pairs","joinedPairs","pair","require_lib","__commonJSMin","exports","module","handlebars","printer","extension","filename","fs","templateString","__require","fs","readFileSync","writeFileSync","import_handlebars","join","join","join","AType","params","_EmptyType","_params","EmptyType","__publicField","_OptionType","OptionType","findType","types","typeId","foundType","tid","FuelError","ErrorCode","getFunctionInputs","inputs","isMandatory","result","input","type","isTypeMandatory","parseTypeArguments","typeArguments","parentTypeId","target","attributeKey","buffer","parentType","parentLabel","typeArgument","currentTypeId","currentLabel","nestedParsed","output","resolveInputLabel","typeDecl","Function","shouldPrefixParams","isOptional","name","prefixedInputs","makeFunction","rawAbiFunction","parseFunctions","rawAbiFunctions","_ArrayType","arrayLen","outputs","component","inputLabel","outputLabel","attributes","inputTypes","outputTypes","ArrayType","_StrType","StrType","_B256Type","B256Type","_B512Type","B512Type","_BoolType","BoolType","_BytesType","capitalizedName","BytesType","extractStructName","rawAbiType","regex","matches","match","errorMessage","_ResultType","ResultType","_EnumType","isAMatch","shouldBeIgnored","r","structName","typeHash","hash","row","components","enumComponents","typeParameters","EnumType","_EvmAddressType","EvmAddressType","_GenericType","label","GenericType","_U8Type","U8Type","_U64Type","U64Type","_RawUntypedPtr","RawUntypedPtr","_RawUntypedSlice","RawUntypedSlice","_StdStringType","StdStringType","_StrSliceType","StrSliceType","_StructType","StructType","_TupleType","TupleType","_U16Type","U16Type","_U256Type","U256Type","_U32Type","U32Type","_VectorType","VectorType","supportedTypes","makeType","TypeClass","tc","shouldSkipAbiType","parseTypes","parsedType","findTypeByConcreteId","id","x","findConcreteTypeById","abi","finsertTypeIdByConcreteTypeId","concreteType","parseComponents","parseFunctionTypeArguments","cTypeId","self","parseConcreteType","concreteTypeId","concrete","transpileAbi","m","t","functions","fn","configurables","conf","loggedTypes","log","Configurable","Abi","filepath","outputDir","rawContents","hexlifiedBinContents","programType","storageSlotsContents","abiNameRegex","abiName","normalizeString","transpiled","rawAbiTypes","rawAbiConfigurables","rawAbiConfigurable","customTypesTable","typeName","commonTypeLabel","ProgramTypeEnum","renderHbsTemplate","data","template","versions","options","renderTemplate","Handlebars","renderHeaderTemplate","header_default","renderCommonTemplate","common_default","renderIndexTemplate","files","members","f","renderFactoryTemplate","camelizedName","hexlifiedBinString","abiJsonString","factory_default","compressBytecode","formatEnums","et","inputValues","outputValues","inputNativeValues","outputNativeValues","typeAnnotations","a","b","caseInsensitiveSort","formatImports","baseMembers","imports","uniq_default","formatStructs","st","renderMainTemplate","commonTypesInUse","functionsTypedefs","functionsFragments","encoders","decoders","enums","structs","storageSlotsJsonString","main_default","assembleContracts","abis","usesCommonTypes","mainFilepath","factoryFilepath","main","factory","indexFile","file","join","func","assemblePredicates","assembleScripts","upperFirst","s","validateBinFile","abiFilepath","binFilepath","binExists","AbiTypeGen","abiFiles","binFiles","storageSlotsFiles","abiFile","relatedBinFile","path","storageSlotFilepath","relatedStorageSlotsFile","import_mkdirp","path","upperFirst","str","codegen","abisDir","outDir","fs","numFiles","codegenInternal","source_default","patchImport","contents","allFiles","allABIFiles","f","path","abiFiles","filepath","readFileSync","abiTypeGen","AbiTypeGen","ProgramTypeEnum","versions","mkdirp","count","file","content","writeFileSync","abi","name","filePath","importedTypes","collectImportedTypes","logByTypes","logType","metadataTypeId","t","typeName","ids","s","getTypeName","id","genOnLogFunction","collectImportedTypes","types","ret","type","genOnLogFunction","ids","getTypeName","id","upperFirst"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/utils.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/exception.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/each.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/helper-missing.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/if.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/log.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/lookup.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers/with.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/helpers.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/decorators/inline.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/decorators.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/logger.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/proto-access.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/base.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/safe-string.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/internal/wrapHelper.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/runtime.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/no-conflict.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars.runtime.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/ast.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/parser.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/visitor.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/helpers.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/base.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/compiler.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/base64-vlq.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/util.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/array-set.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/mapping-list.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-generator.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/binary-search.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/quick-sort.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-map-consumer.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/lib/source-node.js","../../../../../node_modules/.pnpm/source-map@0.6.1/node_modules/source-map/source-map.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/code-gen.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/handlebars/compiler/printer.js","../../../../../node_modules/.pnpm/handlebars@4.7.8/node_modules/handlebars/lib/index.js","../../../src/fuel/codegen/codegen.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/AbiTypeGen.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/Abi.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/AType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/EmptyType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/OptionType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/findType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/getFunctionInputs.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/parseTypeArguments.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/getTypeDeclaration.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/functions/Function.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/makeFunction.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/parseFunctions.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/makeType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/ArrayType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/StrType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/B256Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/B512Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/BoolType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/BytesType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/extractStructName.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/ResultType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/EnumType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/EvmAddressType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/GenericType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/U8Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/U64Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/RawUntypedPtr.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/RawUntypedSlice.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/StdStringType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/StrSliceType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/StructType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/TupleType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/U16Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/U256Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/U32Type.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/types/VectorType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/supportedTypes.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/shouldSkipAbiType.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/parseTypes.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/transpile-abi.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/abi/configurable/Configurable.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/types/enums/ProgramTypeEnum.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/assembleContracts.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/renderHbsTemplate.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/common/common.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/common/index.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/contract/factory.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatEnums.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatImports.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/utils/formatStructs.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/contract/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/assemblePredicates.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/predicate/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/assembleScripts.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/templates/script/main.ts","../../../../../node_modules/.pnpm/@fuel-ts+abi-typegen@0.94.3/node_modules/@fuel-ts/abi-typegen/src/utils/validateBinFile.ts","../../../src/fuel/codegen/utils.ts"],"sourcesContent":["const escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n","const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n","import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n","import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n","import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n","export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n","export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n","import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n","import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n","import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n","import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n","import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n","import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n","import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n","import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n","// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n","export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n","import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n","/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n","import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n","let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n","// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n","import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n","import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n","import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n","import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n","/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n","import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n","import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n","/* eslint-disable new-cap */\nimport Visitor from './visitor';\n\nexport function print(ast) {\n return new PrintVisitor().accept(ast);\n}\n\nexport function PrintVisitor() {\n this.padding = 0;\n}\n\nPrintVisitor.prototype = new Visitor();\n\nPrintVisitor.prototype.pad = function(string) {\n let out = '';\n\n for (let i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n};\n\nPrintVisitor.prototype.Program = function(program) {\n let out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n let blockParams = 'BLOCK PARAMS: [';\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.MustacheStatement = function(mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n};\nPrintVisitor.prototype.Decorator = function(mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n};\n\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function(\n block\n) {\n let out = '';\n\n out += this.pad(\n (block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'\n );\n this.padding++;\n out += this.pad(this.SubExpression(block));\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n if (block.program) {\n this.padding--;\n }\n }\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.PartialStatement = function(partial) {\n let content = 'PARTIAL:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function(partial) {\n let content = 'PARTIAL BLOCK:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n\n return this.pad('{{> ' + content + ' }}');\n};\n\nPrintVisitor.prototype.ContentStatement = function(content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\n\nPrintVisitor.prototype.CommentStatement = function(comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\n\nPrintVisitor.prototype.SubExpression = function(sexpr) {\n let params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (let i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n\n return this.accept(sexpr.path) + ' ' + params + hash;\n};\n\nPrintVisitor.prototype.PathExpression = function(id) {\n let path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n};\n\nPrintVisitor.prototype.StringLiteral = function(string) {\n return '\"' + string.value + '\"';\n};\n\nPrintVisitor.prototype.NumberLiteral = function(number) {\n return 'NUMBER{' + number.value + '}';\n};\n\nPrintVisitor.prototype.BooleanLiteral = function(bool) {\n return 'BOOLEAN{' + bool.value + '}';\n};\n\nPrintVisitor.prototype.UndefinedLiteral = function() {\n return 'UNDEFINED';\n};\n\nPrintVisitor.prototype.NullLiteral = function() {\n return 'NULL';\n};\n\nPrintVisitor.prototype.Hash = function(hash) {\n let pairs = hash.pairs,\n joinedPairs = [];\n\n for (let i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n};\nPrintVisitor.prototype.HashPair = function(pair) {\n return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n","// USAGE:\n// var handlebars = require('handlebars');\n/* eslint-env node */\n/* eslint-disable no-var */\n\n// var local = handlebars.create();\n\nvar handlebars = require('../dist/cjs/handlebars')['default'];\n\nvar printer = require('../dist/cjs/handlebars/compiler/printer');\nhandlebars.PrintVisitor = printer.PrintVisitor;\nhandlebars.print = printer.print;\n\nmodule.exports = handlebars;\n\n// Publish a Node.js require() handler for .handlebars and .hbs files\nfunction extension(module, filename) {\n var fs = require('fs');\n var templateString = fs.readFileSync(filename, 'utf8');\n module.exports = handlebars.compile(templateString);\n}\n/* istanbul ignore else */\nif (typeof require !== 'undefined' && require.extensions) {\n require.extensions['.handlebars'] = extension;\n require.extensions['.hbs'] = extension;\n}\n","import fs, { readFileSync, writeFileSync } from 'fs'\nimport chalk from 'chalk'\nimport { AbiTypeGen, IFile, IFunction, ProgramTypeEnum } from '@fuel-ts/abi-typegen'\nimport mkdirp from 'mkdirp'\nimport path from 'path'\nimport { upperFirst } from './utils.js'\nimport { versions as builtinVersions } from '@fuel-ts/versions'\n\nexport async function codegen(abisDir: string, outDir: string) {\n if (!fs.existsSync(abisDir)) {\n return\n }\n\n const numFiles = await codegenInternal(abisDir, outDir)\n console.log(chalk.green(`Generated ${numFiles} files for Fuel`))\n}\n\nfunction patchImport(contents: string) {\n return contents.replace(/from\\s+['\"](\\..+)['\"]/g, `from '\\$1.js'`)\n}\n\n/*function patchEnumType(contents: string) {\n const matches = contents.matchAll(/export type (.+) = Enum<{ Ok: T, Err: E }>;/g)\n\n for (const m of matches) {\n const vname = m[1]\n contents = contents.replace(m[0], `export type ${vname}<T,E> = Enum<{ Ok: T, Err: E }>;`)\n\n const reg = new RegExp(`export type (.+) = ${vname}`, 'g')\n contents = contents.replace(reg, `export type \\$1<T,E> = ${vname}<T,E>`)\n }\n return contents\n}*/\n\nasync function codegenInternal(abisDir: string, outDir: string): Promise<number> {\n const allFiles = fs.readdirSync(abisDir)\n if (allFiles.length === 0) {\n return 0\n }\n\n const allABIFiles = []\n for (const f of allFiles) {\n if (f.toLowerCase().endsWith('-abi.json')) {\n allABIFiles.push(path.join(abisDir, f))\n }\n }\n if (allABIFiles.length === 0) {\n return 0\n }\n const abiFiles = allABIFiles.map((filepath) => {\n const abi: IFile = {\n path: filepath,\n contents: readFileSync(filepath, 'utf-8')\n }\n return abi\n })\n\n // fuels type gen\n const abiTypeGen = new AbiTypeGen({\n abiFiles,\n binFiles: [],\n storageSlotsFiles: [],\n outputDir: outDir,\n programType: ProgramTypeEnum.CONTRACT,\n versions: { FUELS: builtinVersions.FUELS }\n })\n\n mkdirp.sync(outDir)\n let count = 0\n abiTypeGen.files.forEach((file) => {\n if (!file.path.endsWith('.hex.ts')) {\n const content = patchImport(file.contents)\n // content = patchEnumType(content)\n writeFileSync(file.path, content)\n count++\n }\n })\n\n // for (const file of abiTypeGen.files) {\n // const jsonAbi: JsonAbi = JSON.parse(file.contents)\n // for (const logType of jsonAbi.loggedTypes) {\n // logType.loggedType.name\n //\n // }\n // }\n\n for (const abi of abiTypeGen.abis) {\n const name = abi.capitalizedName.endsWith('Abi') ? abi.capitalizedName.slice(0, -3) : abi.capitalizedName\n const filePath = path.join(outDir, `${name}Processor.ts`)\n const importedTypes = collectImportedTypes(abi.types)\n\n const logByTypes: Record<string, string[]> = {}\n\n for (const logType of abi.rawContents.loggedTypes) {\n const metadataTypeId = abi.rawContents.concreteTypes.find(\n (t) => t.concreteTypeId == logType.concreteTypeId\n )?.metadataTypeId\n // @ts-ignore - we know that the type is in the abi\n let t = abi.types.find((t) => t.rawAbiType.concreteTypeId == logType.concreteTypeId)\n if (!t) {\n t = abi.types.find((t) => t.rawAbiType.typeId == metadataTypeId)\n }\n // @ts-ignore - we know that the type is in the abi\n const typeName = t?.attributes?.outputLabel\n if (typeName) {\n if (!logByTypes[typeName]) {\n logByTypes[typeName] = []\n }\n logByTypes[typeName].push(logType.logId)\n }\n }\n\n const content = `/* Autogenerated file. Do not edit manually. */\n\n/* tslint:disable */\n/* eslint-disable */\n \nimport { FuelAbstractProcessor, FuelContext, FuelProcessorConfig, TypedCall, FuelFetchConfig, FuelCall, FuelLog} from '@sentio/sdk/fuel'\nimport {${abi.commonTypesInUse.join(',')}} from './common.js'\nimport {${importedTypes.join(',')}, ${abi.capitalizedName}} from './${abi.capitalizedName}.js'\n\nimport type { BigNumberish, BN } from 'fuels';\nimport type { BytesLike, Bytes } from 'fuels';\n\n\nnamespace ${name}NS {\n export abstract class CallWithLogs<T extends Array<any>, R> extends TypedCall<T, R> {\n${Object.entries(logByTypes)\n .flatMap(([t, ids]) => {\n const s = []\n s.push(`\n getLogsOfType${getTypeName(t)}(): Array<${t}> {\n return this.logs?.filter(l =>[${ids.map((id) => `\"${id}\"`).join(', ')}].includes(l.logId) ).map(l => l.data) as Array<${t}>\n }`)\n\n return s\n })\n .join('\\n')}\n }\n\n${\n ''\n // abi.functions.map(genCallType).join('\\n')\n}\n}\n\nexport class ${name}Processor extends FuelAbstractProcessor {\n constructor(config?: FuelProcessorConfig) {\n super(${abi.capitalizedName}.abi, config)\n }\n \n static bind(config: FuelProcessorConfig) {\n return new ${name}Processor({\n name: '${name}',\n ...config,\n })\n }\n\n${\n ''\n /* disable codegen for now\n abi.functions.map((f) => genOnCallFunction(name, f)).join('\\n') */\n} \n\n${Object.entries(logByTypes).map(genOnLogFunction).join('\\n')}\n\n}\n`\n writeFileSync(filePath, content)\n count++\n }\n\n return count\n}\n\nfunction genCallType(f: IFunction) {\n const name = upperFirst(f.name)\n const argMap: Record<string, string> = {}\n const argTypes = f.attributes.inputs.split(',').map((t) => t.trim())\n f.rawAbiFunction.inputs.forEach((input, idx) => {\n argMap[input.name] = argTypes[idx]\n })\n\n return `\n export class ${name}Call extends CallWithLogs<[${argTypes.join(', ')}], ${f.attributes.output}> {\n declare args: [${argTypes.join(', ')}]\n declare returnValue: ${f.attributes.output}\n declare argsObject: {\n ${Object.entries(argMap)\n .map(([k, v]) => `${k}: ${v}`)\n .join(', ')}\n } \n constructor(call: FuelCall) {\n super(call)\n }\n }\n`\n}\n\nfunction genOnCallFunction(contractName: string, f: IFunction) {\n const name = upperFirst(f.name)\n return `\n onCall${name}(handler: (call: ${contractName}.${name}Call, ctx: FuelContext) => void | Promise<void>, config?: FuelFetchConfig) {\n return super.onCall('${f.name}', (call, ctx) => handler(new ${contractName}.${name}Call(call), ctx), config)\n }`\n}\n\nfunction collectImportedTypes(types: any[]): string[] {\n const ret = new Set<string>()\n for (const type of types) {\n if ((type && type.name == 'struct') || type.name == 'enum') {\n ret.add(type.attributes.inputLabel)\n ret.add(type.attributes.outputLabel)\n }\n }\n\n return Array.from(ret)\n}\n\nfunction genOnLogFunction([type, ids]: [string, string[]]) {\n const name = getTypeName(type)\n return `\n onLog${name}(handler: (log: FuelLog<${type}>, ctx: FuelContext) => void | Promise<void>, logIdFilter?: string | string[]) {\n return super.onLog<${type}>(logIdFilter ?? [${ids.map((id) => `\"${id}\"`).join(', ')}], (log, ctx) => handler(log, ctx))\n }`\n}\n\nfunction getTypeName(type: string) {\n return upperFirst(type.replace('Output', ''))\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport { Abi } from './abi/Abi';\nimport { ProgramTypeEnum } from './types/enums/ProgramTypeEnum';\nimport type { IFile } from './types/interfaces/IFile';\nimport { assembleContracts } from './utils/assembleContracts';\nimport { assemblePredicates } from './utils/assemblePredicates';\nimport { assembleScripts } from './utils/assembleScripts';\nimport { validateBinFile } from './utils/validateBinFile';\n\n/*\n Manages many instances of Abi\n*/\nexport class AbiTypeGen {\n public readonly abis: Abi[];\n public readonly abiFiles: IFile[];\n public readonly binFiles: IFile[];\n public readonly storageSlotsFiles: IFile[];\n public readonly outputDir: string;\n public readonly files: IFile[];\n public readonly versions: BinaryVersions;\n\n constructor(params: {\n abiFiles: IFile[];\n binFiles: IFile[];\n storageSlotsFiles: IFile[];\n outputDir: string;\n programType: ProgramTypeEnum;\n versions: BinaryVersions;\n }) {\n const { abiFiles, binFiles, outputDir, programType, storageSlotsFiles, versions } = params;\n\n this.outputDir = outputDir;\n\n this.abiFiles = abiFiles;\n this.binFiles = binFiles;\n this.storageSlotsFiles = storageSlotsFiles;\n this.versions = versions;\n\n // Creates a `Abi` for each abi file\n this.abis = this.abiFiles.map((abiFile) => {\n const binFilepath = abiFile.path.replace('-abi.json', '.bin');\n const relatedBinFile = this.binFiles.find(({ path }) => path === binFilepath);\n\n const storageSlotFilepath = abiFile.path.replace('-abi.json', '-storage_slots.json');\n const relatedStorageSlotsFile = this.storageSlotsFiles.find(\n ({ path }) => path === storageSlotFilepath\n );\n\n if (!relatedBinFile) {\n validateBinFile({\n abiFilepath: abiFile.path,\n binExists: !!relatedBinFile,\n binFilepath,\n programType,\n });\n }\n\n const abi = new Abi({\n filepath: abiFile.path,\n rawContents: JSON.parse(abiFile.contents as string),\n hexlifiedBinContents: relatedBinFile?.contents,\n storageSlotsContents: relatedStorageSlotsFile?.contents,\n outputDir,\n programType,\n });\n\n return abi;\n });\n\n // Assemble list of files to be written to disk\n this.files = this.getAssembledFiles({ programType });\n }\n\n private getAssembledFiles(params: { programType: ProgramTypeEnum }): IFile[] {\n const { abis, outputDir, versions } = this;\n const { programType } = params;\n\n switch (programType) {\n case ProgramTypeEnum.CONTRACT:\n return assembleContracts({ abis, outputDir, versions });\n case ProgramTypeEnum.SCRIPT:\n return assembleScripts({ abis, outputDir, versions });\n case ProgramTypeEnum.PREDICATE:\n return assemblePredicates({ abis, outputDir, versions });\n default:\n throw new FuelError(\n ErrorCode.INVALID_INPUT_PARAMETERS,\n `Invalid Typegen programType: ${programType}. Must be one of ${Object.values(\n ProgramTypeEnum\n )}`\n );\n }\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { normalizeString } from '@fuel-ts/utils';\n\nimport type { ProgramTypeEnum } from '../types/enums/ProgramTypeEnum';\nimport type { IConfigurable } from '../types/interfaces/IConfigurable';\nimport type { IFunction } from '../types/interfaces/IFunction';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiOld } from '../types/interfaces/JsonAbi';\nimport type { JsonAbi } from '../types/interfaces/JsonAbiNew';\nimport { parseFunctions } from '../utils/parseFunctions';\nimport { parseTypes } from '../utils/parseTypes';\nimport { transpileAbi } from '../utils/transpile-abi';\n\nimport { Configurable } from './configurable/Configurable';\n\n/*\n Manages many instances of Types and Functions\n*/\nexport class Abi {\n public capitalizedName: string;\n public camelizedName: string;\n public programType: ProgramTypeEnum;\n\n public filepath: string;\n public outputDir: string;\n\n public commonTypesInUse: string[] = [];\n\n public rawContents: JsonAbi;\n public hexlifiedBinContents?: string;\n public storageSlotsContents?: string;\n\n public types: IType[];\n public functions: IFunction[];\n public configurables: IConfigurable[];\n\n constructor(params: {\n filepath: string;\n programType: ProgramTypeEnum;\n rawContents: JsonAbi;\n hexlifiedBinContents?: string;\n storageSlotsContents?: string;\n outputDir: string;\n }) {\n const {\n filepath,\n outputDir,\n rawContents,\n hexlifiedBinContents,\n programType,\n storageSlotsContents,\n } = params;\n\n const abiNameRegex = /([^/]+)-abi\\.json$/m;\n const abiName = filepath.match(abiNameRegex);\n\n const couldNotParseName = !abiName || abiName.length === 0;\n\n if (couldNotParseName) {\n throw new FuelError(\n ErrorCode.PARSE_FAILED,\n `Could not parse name from ABI file: ${filepath}.`\n );\n }\n\n this.programType = programType;\n this.capitalizedName = `${normalizeString(abiName[1])}`;\n this.camelizedName = this.capitalizedName.replace(/^./m, (x) => x.toLowerCase());\n\n this.filepath = filepath;\n this.rawContents = rawContents;\n this.hexlifiedBinContents = hexlifiedBinContents;\n this.storageSlotsContents = storageSlotsContents;\n this.outputDir = outputDir;\n\n const { types, functions, configurables } = this.parse();\n\n this.types = types;\n this.functions = functions;\n this.configurables = configurables;\n\n this.computeCommonTypesInUse();\n }\n\n parse() {\n const transpiled = transpileAbi(this.rawContents) as JsonAbiOld;\n const {\n types: rawAbiTypes,\n functions: rawAbiFunctions,\n configurables: rawAbiConfigurables,\n } = transpiled;\n\n const types = parseTypes({ rawAbiTypes });\n const functions = parseFunctions({ rawAbiFunctions, types });\n const configurables = rawAbiConfigurables.map(\n (rawAbiConfigurable) => new Configurable({ types, rawAbiConfigurable })\n );\n\n return {\n types,\n functions,\n configurables,\n };\n }\n\n computeCommonTypesInUse() {\n const customTypesTable: Record<string, string> = {\n option: 'Option',\n enum: 'Enum',\n vector: 'Vec',\n result: 'Result',\n };\n\n this.commonTypesInUse = [];\n\n Object.keys(customTypesTable).forEach((typeName) => {\n const isInUse = !!this.types.find((t) => t.name === typeName);\n\n if (isInUse) {\n const commonTypeLabel: string = customTypesTable[typeName];\n this.commonTypesInUse.push(commonTypeLabel);\n }\n });\n }\n}\n","import type { ITypeAttributes } from '../../types/interfaces/IType';\nimport type { JsonAbiType } from '../../types/interfaces/JsonAbi';\n\nexport class AType {\n public rawAbiType: JsonAbiType;\n public attributes: ITypeAttributes;\n public requiredFuelsMembersImports: string[];\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n this.rawAbiType = params.rawAbiType;\n this.attributes = {\n inputLabel: 'unknown',\n outputLabel: 'unknown',\n };\n this.requiredFuelsMembersImports = [];\n }\n}\n","import type { JsonAbiType } from '../..';\nimport type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class EmptyType extends AType implements IType {\n public static swayType = '()';\n\n public name = 'empty';\n\n static MATCH_REGEX: RegExp = /^\\(\\)$/m;\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n super(params);\n this.attributes = {\n inputLabel: 'undefined',\n outputLabel: 'void',\n };\n }\n\n static isSuitableFor(params: { type: string }) {\n return EmptyType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class OptionType extends AType implements IType {\n public static swayType = 'enum Option';\n\n public name = 'option';\n\n static MATCH_REGEX: RegExp = /^enum (std::option::)?Option$/m;\n\n static isSuitableFor(params: { type: string }) {\n return OptionType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Option`,\n outputLabel: `Option`,\n };\n return this.attributes;\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { IType } from '../types/interfaces/IType';\n\nexport function findType(params: { types: IType[]; typeId: number }) {\n const { types, typeId } = params;\n\n const foundType = types.find(({ rawAbiType: { typeId: tid } }) => tid === typeId);\n\n if (!foundType) {\n throw new FuelError(ErrorCode.TYPE_ID_NOT_FOUND, `Type ID not found: ${typeId}.`);\n }\n\n // ensure type attributes is always parsed\n foundType.parseComponentsAttributes({ types });\n\n return foundType;\n}\n","import { EmptyType } from '../abi/types/EmptyType';\nimport { OptionType } from '../abi/types/OptionType';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\n\nexport type FunctionInput<TArg extends JsonAbiArgument = JsonAbiArgument> = TArg & {\n isOptional: boolean;\n};\n\nexport const getFunctionInputs = (params: {\n types: IType[];\n inputs: readonly JsonAbiArgument[];\n}): Array<FunctionInput> => {\n const { types, inputs } = params;\n let isMandatory = false;\n\n return inputs.reduceRight((result, input) => {\n const type = findType({ types, typeId: input.type });\n const isTypeMandatory =\n !EmptyType.isSuitableFor({ type: type.rawAbiType.type }) &&\n !OptionType.isSuitableFor({ type: type.rawAbiType.type });\n\n isMandatory = isMandatory || isTypeMandatory;\n return [{ ...input, isOptional: !isMandatory }, ...result];\n }, [] as FunctionInput[]);\n};\n","import type { TargetEnum } from '../types/enums/TargetEnum';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\n\n/*\n Recursively parses the given `typeArguments` node\n*/\nexport function parseTypeArguments(params: {\n types: IType[];\n target: TargetEnum;\n typeArguments: readonly JsonAbiArgument[];\n parentTypeId?: number;\n}): string {\n const { types, typeArguments, parentTypeId, target } = params;\n\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n\n const buffer: string[] = [];\n\n let parentType: IType | undefined;\n let parentLabel: string | undefined;\n\n if (parentTypeId !== undefined) {\n parentType = findType({ types, typeId: parentTypeId });\n parentLabel = parentType.attributes[attributeKey];\n }\n\n // loop through all `typeArgument` items\n typeArguments.forEach((typeArgument) => {\n const currentTypeId = typeArgument.type;\n\n const currentType = findType({ types, typeId: currentTypeId });\n const currentLabel = currentType.attributes[attributeKey];\n\n if (typeArgument.typeArguments) {\n // recursively process nested `typeArguments`\n const nestedParsed = parseTypeArguments({\n types,\n target,\n parentTypeId: typeArgument.type,\n typeArguments: typeArgument.typeArguments as JsonAbiArgument[],\n });\n\n buffer.push(nestedParsed);\n } else {\n buffer.push(`${currentLabel}`);\n }\n });\n\n let output = buffer.join(', ');\n\n if (parentLabel) {\n output = `${parentLabel}<${output}>`;\n }\n\n return output;\n}\n","import { TargetEnum } from '../types/enums/TargetEnum';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiArgument } from '../types/interfaces/JsonAbi';\n\nimport { findType } from './findType';\nimport { parseTypeArguments } from './parseTypeArguments';\n\nexport function resolveInputLabel(\n types: IType[],\n typeId: number,\n typeArguments: JsonAbiArgument['typeArguments']\n) {\n const type = findType({ types, typeId });\n\n let typeDecl: string;\n\n if (typeArguments?.length) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target: TargetEnum.INPUT,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n typeDecl = type.attributes.inputLabel;\n }\n\n return typeDecl;\n}\n","import type { IFunction, JsonAbiFunction, IFunctionAttributes } from '../../index';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { getFunctionInputs } from '../../utils/getFunctionInputs';\nimport { resolveInputLabel } from '../../utils/getTypeDeclaration';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nexport class Function implements IFunction {\n public name: string;\n public types: IType[];\n public rawAbiFunction: JsonAbiFunction;\n public attributes: IFunctionAttributes;\n\n constructor(params: { types: IType[]; rawAbiFunction: JsonAbiFunction }) {\n this.rawAbiFunction = params.rawAbiFunction;\n this.types = params.types;\n this.name = params.rawAbiFunction.name;\n\n this.attributes = {\n inputs: this.bundleInputTypes(),\n output: this.bundleOutputTypes(),\n prefixedInputs: this.bundleInputTypes(true),\n };\n }\n\n bundleInputTypes(shouldPrefixParams: boolean = false) {\n const { types } = this;\n\n // loop through all mandatory inputs\n const inputs = getFunctionInputs({ types, inputs: this.rawAbiFunction.inputs }).map(\n ({ isOptional, ...input }) => {\n const { name, type: typeId, typeArguments } = input;\n\n const typeDecl = resolveInputLabel(types, typeId, typeArguments);\n\n // assemble it in `[key: string]: <Type>` fashion\n if (shouldPrefixParams) {\n const optionalSuffix = isOptional ? '?' : '';\n return `${name}${optionalSuffix}: ${typeDecl}`;\n }\n\n return typeDecl;\n }\n );\n\n return inputs.join(', ');\n }\n\n bundleOutputTypes() {\n return parseTypeArguments({\n types: this.types,\n target: TargetEnum.OUTPUT,\n typeArguments: [this.rawAbiFunction.output],\n });\n }\n\n getDeclaration() {\n const { name } = this;\n const { prefixedInputs, output } = this.attributes;\n const decl = `${name}: InvokeFunction<[${prefixedInputs}], ${output}>`;\n return decl;\n }\n}\n","import { Function } from '../abi/functions/Function';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiFunction } from '../types/interfaces/JsonAbi';\n\nexport function makeFunction(params: { types: IType[]; rawAbiFunction: JsonAbiFunction }) {\n const { types, rawAbiFunction } = params;\n return new Function({ types, rawAbiFunction });\n}\n","import type { IFunction } from '../types/interfaces/IFunction';\nimport type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiFunction } from '../types/interfaces/JsonAbi';\n\nimport { makeFunction } from './makeFunction';\n\nexport function parseFunctions(params: {\n types: IType[];\n rawAbiFunctions: readonly JsonAbiFunction[];\n}) {\n const { types, rawAbiFunctions } = params;\n const functions: IFunction[] = rawAbiFunctions.map((rawAbiFunction) =>\n makeFunction({ types, rawAbiFunction })\n );\n return functions;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nimport { supportedTypes } from './supportedTypes';\n\nexport function makeType(params: { rawAbiType: JsonAbiType }) {\n const { rawAbiType } = params;\n const { type } = rawAbiType;\n\n const TypeClass = supportedTypes.find((tc) => tc.isSuitableFor({ type }));\n\n if (!TypeClass) {\n throw new FuelError(ErrorCode.TYPE_NOT_SUPPORTED, `Type not supported: ${type}`);\n }\n\n return new TypeClass(params);\n}\n","import { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class ArrayType extends AType implements IType {\n // Note: the array length expressed in '; 2]' could be any length\n public static swayType = '[_; 2]';\n\n public name = 'array';\n\n static MATCH_REGEX: RegExp = /^\\[_; ([0-9]+)\\]$/m;\n\n static isSuitableFor(params: { type: string }) {\n return ArrayType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(params: { types: IType[] }) {\n const { types } = params;\n const { type } = this.rawAbiType;\n\n // array length will be used to generated a fixed-length array type\n const arrayLen = Number(type.match(ArrayType.MATCH_REGEX)?.[1]);\n\n const inputs: string[] = [];\n const outputs: string[] = [];\n\n this.rawAbiType.components?.forEach((component) => {\n const { type: typeId, typeArguments } = component;\n\n if (!typeArguments) {\n // if component has no type arguments, read its attributes and voilà\n const { attributes } = findType({ types, typeId });\n\n inputs.push(attributes.inputLabel);\n outputs.push(attributes.outputLabel);\n } else {\n // otherwise process child `typeArguments` recursively\n const inputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.INPUT,\n });\n\n const outputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.OUTPUT,\n });\n\n inputs.push(inputLabel);\n outputs.push(outputLabel);\n }\n });\n\n // fixed-length array, based on `arrayLen`\n const inputTypes = Array(arrayLen).fill(inputs[0]).join(', ');\n const outputTypes = Array(arrayLen).fill(outputs[0]).join(', ');\n\n this.attributes = {\n inputLabel: `[${inputTypes}]`,\n outputLabel: `[${outputTypes}]`,\n };\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StrType extends AType implements IType {\n // Note: the str length expressed in '[3]' could be any length\n public static swayType = 'str[3]';\n\n public name = 'str';\n\n static MATCH_REGEX: RegExp = /^str\\[(.+)\\]$/m;\n\n static isSuitableFor(params: { type: string }) {\n return StrType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: 'string',\n outputLabel: 'string',\n };\n return this.attributes;\n }\n}\n","import { StrType } from './StrType';\n\nexport class B256Type extends StrType {\n public static swayType = 'b256';\n\n public name = 'b256';\n\n static MATCH_REGEX = /^b256$/m;\n\n static isSuitableFor(params: { type: string }) {\n return B256Type.MATCH_REGEX.test(params.type);\n }\n}\n","import { B256Type } from './B256Type';\n\nexport class B512Type extends B256Type {\n public static swayType = 'struct B512';\n\n public name = 'b512';\n\n static MATCH_REGEX = /^struct (std::b512::)?B512$/m;\n\n static isSuitableFor(params: { type: string }) {\n return B512Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class BoolType extends AType implements IType {\n public static swayType = 'bool';\n\n public name = 'bool';\n\n static MATCH_REGEX: RegExp = /^bool$/m;\n\n static isSuitableFor(params: { type: string }) {\n return BoolType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: 'boolean',\n outputLabel: 'boolean',\n };\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class BytesType extends ArrayType {\n public static swayType = 'struct Bytes';\n\n public name = 'bytes';\n\n static MATCH_REGEX: RegExp = /^struct (std::bytes::)?Bytes/m;\n\n static isSuitableFor(params: { type: string }) {\n return BytesType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'Bytes';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nexport function extractStructName(params: { rawAbiType: JsonAbiType; regex: RegExp }) {\n const { rawAbiType, regex } = params;\n\n const matches = rawAbiType.type.match(regex);\n const match = matches?.[2] ?? matches?.[1];\n\n if (!match) {\n let errorMessage = `Couldn't extract struct name with: '${regex}'.\\n\\n`;\n errorMessage += `Check your JSON ABI.\\n\\n[source]\\n`;\n errorMessage += `${JSON.stringify(rawAbiType, null, 2)}`;\n\n throw new FuelError(ErrorCode.JSON_ABI_ERROR, errorMessage);\n }\n\n return match;\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class ResultType extends AType implements IType {\n public static swayType = 'enum Result';\n\n public name = 'result';\n\n static MATCH_REGEX: RegExp = /^enum (std::result::)?Result$/m;\n\n static isSuitableFor(params: { type: string }) {\n return ResultType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Result`,\n outputLabel: `Result`,\n };\n return this.attributes;\n }\n}\n","import type { JsonAbiArgument } from '../../index';\nimport type { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\nimport { EmptyType } from './EmptyType';\nimport { OptionType } from './OptionType';\nimport { ResultType } from './ResultType';\n\nexport class EnumType extends AType implements IType {\n public static swayType = 'enum MyEnumName';\n\n public name = 'enum';\n\n static MATCH_REGEX: RegExp = /^enum (.+::)?(.+)$/m;\n static IGNORE_REGEXES: RegExp[] = [OptionType.MATCH_REGEX, ResultType.MATCH_REGEX];\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = EnumType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = EnumType.IGNORE_REGEXES.some((r) => r.test(params.type));\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const structName = this.getStructName();\n\n this.attributes = {\n structName,\n inputLabel: `${structName}Input`,\n outputLabel: `${structName}Output`,\n };\n\n return this.attributes;\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: EnumType.MATCH_REGEX,\n });\n return name;\n }\n\n public getNativeEnum(params: { types: IType[] }) {\n const { types } = params;\n\n const typeHash: { [key: number]: IType['rawAbiType']['type'] } = types.reduce(\n (hash, row) => ({\n ...hash,\n [row.rawAbiType.typeId]: row.rawAbiType.type,\n }),\n {}\n );\n\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const enumComponents = components as JsonAbiArgument[];\n\n if (!enumComponents.every(({ type }) => typeHash[type] === EmptyType.swayType)) {\n return undefined;\n }\n\n return enumComponents.map(({ name }) => `${name} = '${name}'`).join(', ');\n }\n\n public getStructContents(params: { types: IType[]; target: TargetEnum }) {\n const { types, target } = params;\n\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const enumComponents = components as JsonAbiArgument[];\n\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n\n const contents = enumComponents.map((component) => {\n const { name, type: typeId, typeArguments } = component;\n\n if (typeId === 0) {\n return `${name}: []`;\n }\n\n const type = findType({ types, typeId });\n let typeDecl: string;\n\n if (typeArguments) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n typeDecl = type.attributes[attributeKey];\n }\n\n return `${name}: ${typeDecl}`;\n });\n\n return contents.join(', ');\n }\n\n public getStructDeclaration(params: { types: IType[] }) {\n const { types } = params;\n const { typeParameters } = this.rawAbiType;\n\n if (typeParameters) {\n const structs = typeParameters.map((typeId) => findType({ types, typeId }));\n\n const labels = structs.map(({ attributes: { inputLabel } }) => inputLabel);\n\n return `<${labels.join(', ')}>`;\n }\n\n return '';\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class EvmAddressType extends AType implements IType {\n public static swayType = 'struct EvmAddress';\n\n public name = 'evmAddress';\n\n static MATCH_REGEX: RegExp = /^struct (std::vm::evm::evm_address::)?EvmAddress$/m;\n\n static isSuitableFor(params: { type: string }) {\n return EvmAddressType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'EvmAddress';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\n\nimport { AType } from './AType';\n\nexport class GenericType extends AType implements IType {\n public static swayType = 'generic T';\n\n public name = 'generic';\n\n static MATCH_REGEX: RegExp = /^generic ([^\\s]+)$/m;\n\n static isSuitableFor(params: { type: string }) {\n return GenericType.MATCH_REGEX.test(params.type);\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: GenericType.MATCH_REGEX,\n });\n return name;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const label = this.getStructName();\n\n this.attributes = {\n inputLabel: label,\n outputLabel: label,\n };\n\n return this.attributes;\n }\n}\n","import type { JsonAbiType } from '../../index';\nimport type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class U8Type extends AType implements IType {\n public static swayType = 'u8';\n\n public name = 'u8';\n\n public static MATCH_REGEX: RegExp = /^u8$/m;\n\n constructor(params: { rawAbiType: JsonAbiType }) {\n super(params);\n this.attributes = {\n inputLabel: `BigNumberish`,\n outputLabel: `number`,\n };\n this.requiredFuelsMembersImports = [this.attributes.inputLabel];\n }\n\n static isSuitableFor(params: { type: string }) {\n return U8Type.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U64Type extends U8Type implements IType {\n public static swayType = 'u64';\n\n public name = 'u64';\n\n public static MATCH_REGEX: RegExp = /^u64$/m;\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `BigNumberish`,\n outputLabel: `BN`,\n };\n this.requiredFuelsMembersImports = Object.values(this.attributes);\n return this.attributes;\n }\n\n static isSuitableFor(params: { type: string }) {\n return U64Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U64Type } from './U64Type';\n\nexport class RawUntypedPtr extends U64Type implements IType {\n public static swayType = 'raw untyped ptr';\n\n public name = 'rawUntypedPtr';\n\n public static MATCH_REGEX: RegExp = /^raw untyped ptr$/m;\n\n static isSuitableFor(params: { type: string }) {\n return RawUntypedPtr.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class RawUntypedSlice extends ArrayType {\n public static swayType = 'raw untyped slice';\n\n public name = 'rawUntypedSlice';\n\n public static MATCH_REGEX: RegExp = /^raw untyped slice$/m;\n\n static isSuitableFor(params: { type: string }) {\n return RawUntypedSlice.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'RawSlice';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StdStringType extends AType implements IType {\n public static swayType = 'struct String';\n\n public name = 'stdString';\n\n static MATCH_REGEX: RegExp = /^struct (std::string::)?String/m;\n\n static isSuitableFor(params: { type: string }) {\n return StdStringType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'StdString';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { AType } from './AType';\n\nexport class StrSliceType extends AType implements IType {\n public static swayType = 'str';\n\n public name = 'strSlice';\n\n static MATCH_REGEX: RegExp = /^str$/m;\n\n static isSuitableFor(params: { type: string }) {\n return StrSliceType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const capitalizedName = 'StrSlice';\n\n this.attributes = {\n inputLabel: capitalizedName,\n outputLabel: capitalizedName,\n };\n\n this.requiredFuelsMembersImports = [capitalizedName];\n\n return this.attributes;\n }\n}\n","import type { JsonAbiArgument } from '../../index';\nimport type { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { extractStructName } from '../../utils/extractStructName';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class StructType extends AType implements IType {\n public static swayType = 'struct MyStruct';\n\n public name = 'struct';\n\n static MATCH_REGEX: RegExp = /^struct (.+::)?(.+)$/m;\n static IGNORE_REGEX: RegExp = /^struct (std::.*)?(Vec|RawVec|EvmAddress|Bytes|String|RawBytes)$/m;\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = StructType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = StructType.IGNORE_REGEX.test(params.type);\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n const structName = this.getStructName();\n\n this.attributes = {\n structName,\n inputLabel: `${structName}Input`,\n outputLabel: `${structName}Output`,\n };\n\n return this.attributes;\n }\n\n public getStructName() {\n const name = extractStructName({\n rawAbiType: this.rawAbiType,\n regex: StructType.MATCH_REGEX,\n });\n return name;\n }\n\n public getStructContents(params: { types: IType[]; target: TargetEnum }) {\n const { types, target } = params;\n const { components } = this.rawAbiType;\n\n // `components` array guaranteed to always exist for structs/enums\n const structComponents = components as JsonAbiArgument[];\n\n // loop through all components\n const members = structComponents.map((component) => {\n const { name, type: typeId, typeArguments } = component;\n\n const type = findType({ types, typeId });\n\n let typeDecl: string;\n\n if (typeArguments) {\n // recursively process child `typeArguments`\n typeDecl = parseTypeArguments({\n types,\n target,\n parentTypeId: typeId,\n typeArguments,\n });\n } else {\n // or just collect type declaration\n const attributeKey: 'inputLabel' | 'outputLabel' = `${target}Label`;\n typeDecl = type.attributes[attributeKey];\n }\n\n // assemble it in `[key: string]: <Type>` fashion\n return `${name}: ${typeDecl}`;\n });\n\n return members.join(', ');\n }\n\n public getStructDeclaration(params: { types: IType[] }) {\n const { types } = params;\n const { typeParameters } = this.rawAbiType;\n\n if (typeParameters) {\n const structs = typeParameters.map((typeId) => findType({ types, typeId }));\n\n const labels = structs.map(({ attributes: { inputLabel } }) => inputLabel);\n\n return `<${labels.join(', ')}>`;\n }\n\n return '';\n }\n}\n","import { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\nimport { findType } from '../../utils/findType';\nimport { parseTypeArguments } from '../../utils/parseTypeArguments';\n\nimport { AType } from './AType';\n\nexport class TupleType extends AType implements IType {\n // Note: a tuple can have more/less than 3x items (like the one bellow)\n public static swayType = '(_, _, _)';\n\n public name = 'tupple';\n\n static MATCH_REGEX: RegExp = /^\\([_,\\s]+\\)$/m;\n\n static isSuitableFor(params: { type: string }) {\n return TupleType.MATCH_REGEX.test(params.type);\n }\n\n public parseComponentsAttributes(params: { types: IType[] }) {\n const { types } = params;\n\n const inputs: string[] = [];\n const outputs: string[] = [];\n\n this.rawAbiType.components?.forEach((component) => {\n const { type: typeId, typeArguments } = component;\n\n if (!typeArguments) {\n // if component has no type arguments, read its attributes and voilà\n const { attributes } = findType({ types, typeId });\n\n inputs.push(attributes.inputLabel);\n outputs.push(attributes.outputLabel);\n } else {\n // otherwise process child `typeArguments` recursively\n const inputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.INPUT,\n });\n\n const outputLabel = parseTypeArguments({\n types,\n typeArguments,\n parentTypeId: typeId,\n target: TargetEnum.OUTPUT,\n });\n\n inputs.push(inputLabel);\n outputs.push(outputLabel);\n }\n });\n\n this.attributes = {\n inputLabel: `[${inputs.join(', ')}]`,\n outputLabel: `[${outputs.join(', ')}]`,\n };\n\n return this.attributes;\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U16Type extends U8Type implements IType {\n public static swayType = 'u16';\n\n public name = 'u16';\n\n public static MATCH_REGEX: RegExp = /^u16$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U16Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U64Type } from './U64Type';\n\nexport class U256Type extends U64Type implements IType {\n public static swayType = 'u256';\n\n public name = 'u256';\n\n public static MATCH_REGEX: RegExp = /^u256$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U256Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { U8Type } from './U8Type';\n\nexport class U32Type extends U8Type implements IType {\n public static swayType = 'u32';\n\n public name = 'u32';\n\n public static MATCH_REGEX: RegExp = /^u32$/m;\n\n static isSuitableFor(params: { type: string }) {\n return U32Type.MATCH_REGEX.test(params.type);\n }\n}\n","import type { IType } from '../../types/interfaces/IType';\n\nimport { ArrayType } from './ArrayType';\n\nexport class VectorType extends ArrayType {\n public static swayType = 'struct Vec';\n\n public name = 'vector';\n\n static MATCH_REGEX: RegExp = /^struct (std::vec::)?Vec/m;\n static IGNORE_REGEX: RegExp = /^struct (std::vec::)?RawVec$/m;\n\n static isSuitableFor(params: { type: string }) {\n const isAMatch = VectorType.MATCH_REGEX.test(params.type);\n const shouldBeIgnored = VectorType.IGNORE_REGEX.test(params.type);\n return isAMatch && !shouldBeIgnored;\n }\n\n public parseComponentsAttributes(_params: { types: IType[] }) {\n this.attributes = {\n inputLabel: `Vec`,\n outputLabel: `Vec`,\n };\n return this.attributes;\n }\n}\n","import { ArrayType } from '../abi/types/ArrayType';\nimport { B256Type } from '../abi/types/B256Type';\nimport { B512Type } from '../abi/types/B512Type';\nimport { BoolType } from '../abi/types/BoolType';\nimport { BytesType } from '../abi/types/BytesType';\nimport { EmptyType } from '../abi/types/EmptyType';\nimport { EnumType } from '../abi/types/EnumType';\nimport { EvmAddressType } from '../abi/types/EvmAddressType';\nimport { GenericType } from '../abi/types/GenericType';\nimport { OptionType } from '../abi/types/OptionType';\nimport { RawUntypedPtr } from '../abi/types/RawUntypedPtr';\nimport { RawUntypedSlice } from '../abi/types/RawUntypedSlice';\nimport { ResultType } from '../abi/types/ResultType';\nimport { StdStringType } from '../abi/types/StdStringType';\nimport { StrSliceType } from '../abi/types/StrSliceType';\nimport { StrType } from '../abi/types/StrType';\nimport { StructType } from '../abi/types/StructType';\nimport { TupleType } from '../abi/types/TupleType';\nimport { U16Type } from '../abi/types/U16Type';\nimport { U256Type } from '../abi/types/U256Type';\nimport { U32Type } from '../abi/types/U32Type';\nimport { U64Type } from '../abi/types/U64Type';\nimport { U8Type } from '../abi/types/U8Type';\nimport { VectorType } from '../abi/types/VectorType';\n\nexport const supportedTypes = [\n EmptyType,\n ArrayType,\n B256Type,\n B512Type,\n BoolType,\n BytesType,\n EnumType,\n GenericType,\n OptionType,\n RawUntypedPtr,\n RawUntypedSlice,\n StdStringType,\n StrType,\n StrSliceType,\n StructType,\n TupleType,\n U16Type,\n U32Type,\n U64Type,\n U256Type,\n U8Type,\n VectorType,\n EvmAddressType,\n ResultType,\n];\n","export function shouldSkipAbiType(params: { type: string }) {\n const ignoreList = [\n 'struct RawVec',\n 'struct std::vec::RawVec',\n 'struct RawBytes',\n 'struct std::bytes::RawBytes',\n ];\n const shouldSkip = ignoreList.indexOf(params.type) >= 0;\n return shouldSkip;\n}\n","import type { IType } from '../types/interfaces/IType';\nimport type { JsonAbiType } from '../types/interfaces/JsonAbi';\n\nimport { makeType } from './makeType';\nimport { shouldSkipAbiType } from './shouldSkipAbiType';\n\nexport function parseTypes(params: { rawAbiTypes: readonly JsonAbiType[] }) {\n const types: IType[] = [];\n\n // First we parse all ROOT nodes\n params.rawAbiTypes.forEach((rawAbiType) => {\n const { type } = rawAbiType;\n const skip = shouldSkipAbiType({ type });\n if (!skip) {\n const parsedType = makeType({ rawAbiType });\n types.push(parsedType);\n }\n });\n\n // Then we parse all their components' [attributes]\n types.forEach((type) => {\n type.parseComponentsAttributes({ types });\n });\n\n return types;\n}\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable no-param-reassign */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n\nconst findTypeByConcreteId = (types, id) => types.find((x) => x.concreteTypeId === id);\n\nconst findConcreteTypeById = (abi, id) => abi.concreteTypes.find((x) => x.concreteTypeId === id);\n\nfunction finsertTypeIdByConcreteTypeId(abi, types, id) {\n const concreteType = findConcreteTypeById(abi, id);\n\n if (concreteType.metadataTypeId !== undefined) {\n return concreteType.metadataTypeId;\n }\n\n const type = findTypeByConcreteId(types, id);\n if (type) {\n return type.typeId;\n }\n\n types.push({\n typeId: types.length,\n type: concreteType.type,\n components: parseComponents(concreteType.components),\n concreteTypeId: id,\n typeParameters: concreteType.typeParameters ?? null,\n originalConcreteTypeId: concreteType?.concreteTypeId,\n });\n\n return types.length - 1;\n}\n\nfunction parseFunctionTypeArguments(abi, types, concreteType) {\n return (\n concreteType.typeArguments?.map((cTypeId) => {\n const self = findConcreteTypeById(abi, cTypeId);\n const type = !isNaN(cTypeId) ? cTypeId : finsertTypeIdByConcreteTypeId(abi, types, cTypeId);\n return {\n name: '',\n type,\n // originalTypeId: cTypeId,\n typeArguments: parseFunctionTypeArguments(abi, types, self),\n };\n }) ?? null\n );\n}\n\nexport function parseConcreteType(abi, types, concreteTypeId, name) {\n const type = finsertTypeIdByConcreteTypeId(abi, types, concreteTypeId);\n const concrete = findConcreteTypeById(abi, concreteTypeId);\n return {\n name: name ?? '',\n type,\n // concreteTypeId,\n typeArguments: parseFunctionTypeArguments(abi, types, concrete),\n };\n}\n\nfunction parseComponents(abi, types, components) {\n return (\n components?.map((component) => {\n const { typeId, name, typeArguments } = component;\n const type = !isNaN(typeId) ? typeId : finsertTypeIdByConcreteTypeId(abi, types, typeId);\n return {\n name,\n type,\n // originalTypeId: typeId,\n typeArguments: parseComponents(abi, types, typeArguments),\n };\n }) ?? null\n );\n}\n\n/**\n * This will transpile new ABIs (spec: \"1\") to the old format.\n *\n * The new format got these new props:\n * - `specVersion`,\n * - `concreteTypes`\n * - `metadataTypes`\n *\n * The old format contains only:\n * - `types`\n */\nexport function transpileAbi(abi) {\n // do not transpile older versions\n if (!abi.specVersion) {\n return abi;\n }\n\n // 0. define empty types array\n const types = [];\n\n // 1. root level of metadata types\n abi.metadataTypes.forEach((m) => {\n const t = {\n typeId: m.metadataTypeId,\n type: m.type,\n components: m.components ?? (m.type === '()' ? [] : null),\n typeParameters: m.typeParameters ?? null,\n };\n types.push(t);\n });\n\n // 2. the metadata's components\n types.forEach((t) => {\n t.components = parseComponents(abi, types, t.components);\n });\n\n // 3. functions inputs/outputs\n const functions = abi.functions.map((fn) => {\n const inputs = fn.inputs.map(({ concreteTypeId, name }) =>\n parseConcreteType(abi, types, concreteTypeId, name)\n );\n const output = parseConcreteType(abi, types, fn.output, '');\n return { ...fn, inputs, output };\n });\n\n // 4. configurables\n const configurables = abi.configurables.map((conf) => ({\n name: conf.name,\n configurableType: parseConcreteType(abi, types, conf.concreteTypeId),\n offset: conf.offset,\n }));\n\n // 5. loggedTypes\n const loggedTypes = abi.loggedTypes.map((log) => ({\n logId: log.logId,\n loggedType: parseConcreteType(abi, types, log.concreteTypeId),\n }));\n\n // transpiled ABI\n const transpiled = {\n encoding: abi.encodingVersion,\n types,\n functions,\n loggedTypes,\n messagesTypes: abi.messagesTypes,\n configurables,\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return transpiled as any;\n}\n","import type { IConfigurable } from '../../types/interfaces/IConfigurable';\nimport type { IType } from '../../types/interfaces/IType';\nimport type { JsonAbiConfigurable } from '../../types/interfaces/JsonAbi';\nimport { resolveInputLabel } from '../../utils/getTypeDeclaration';\n\nexport class Configurable implements IConfigurable {\n public name: string;\n public inputLabel: string;\n\n constructor(params: { types: IType[]; rawAbiConfigurable: JsonAbiConfigurable }) {\n const {\n types,\n rawAbiConfigurable: {\n name,\n configurableType: { type, typeArguments },\n },\n } = params;\n\n this.name = name;\n\n this.inputLabel = resolveInputLabel(types, type, typeArguments);\n }\n}\n","export enum ProgramTypeEnum {\n CONTRACT = 'contract',\n SCRIPT = 'script',\n PREDICATE = 'predicate',\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderFactoryTemplate } from '../templates/contract/factory';\nimport { renderMainTemplate } from '../templates/contract/main';\n\n/**\n * Render all Contract-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assembleContracts(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName } = abi;\n\n const mainFilepath = `${outputDir}/${capitalizedName}.ts`;\n const factoryFilepath = `${outputDir}/${capitalizedName}Factory.ts`;\n\n const main: IFile = {\n path: mainFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderFactoryTemplate({ abi, versions }),\n };\n\n files.push(main);\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport Handlebars from 'handlebars';\n\nimport headerTemplate from './common/_header.hbs';\n\n/*\n Renders the given template w/ the given data, while injecting common\n header for disabling lint rules and annotating Fuel component's versions.\n*/\nexport function renderHbsTemplate(params: {\n template: string;\n versions: BinaryVersions;\n data?: Record<string, unknown>;\n}) {\n const { data, template, versions } = params;\n\n const options = {\n strict: true,\n noEscape: true,\n };\n\n const renderTemplate = Handlebars.compile(template, options);\n const renderHeaderTemplate = Handlebars.compile(headerTemplate, options);\n\n const text = renderTemplate({\n ...data,\n header: renderHeaderTemplate(versions),\n });\n\n return text.replace(/[\\n]{3,}/gm, '\\n\\n');\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport commonTemplate from './common.hbs';\n\nexport function renderCommonTemplate(params: { versions: BinaryVersions }) {\n const { versions } = params;\n const text = renderHbsTemplate({ template: commonTemplate, versions });\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { IFile } from '../../types/interfaces/IFile';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport indexTemplate from './index.hbs';\n\nexport function renderIndexTemplate(params: {\n files: Pick<IFile, 'path'>[];\n versions: BinaryVersions;\n}) {\n const { files, versions } = params;\n\n const members = files.map((f) => f.path.match(/([^/]+)\\.ts$/m)?.[1]);\n\n const text = renderHbsTemplate({\n template: indexTemplate,\n versions,\n data: {\n members,\n },\n });\n\n return text;\n}\n","import { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\n\nimport factoryTemplate from './factory.hbs';\n\nexport function renderFactoryTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { versions, abi } = params;\n const {\n camelizedName,\n capitalizedName,\n rawContents,\n storageSlotsContents,\n hexlifiedBinContents: hexlifiedBinString,\n } = abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n const storageSlotsJsonString = storageSlotsContents ?? '[]';\n\n const text = renderHbsTemplate({\n template: factoryTemplate,\n versions,\n data: {\n camelizedName,\n capitalizedName,\n abiJsonString,\n storageSlotsJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n },\n });\n\n return text;\n}\n","import type { EnumType } from '../../abi/types/EnumType';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\n\nexport function formatEnums(params: { types: IType[] }) {\n const { types } = params;\n\n const enums = types\n .filter((t) => t.name === 'enum')\n .map((t) => {\n const et = t as EnumType; // only enums here\n const structName = et.getStructName();\n const inputValues = et.getStructContents({ types, target: TargetEnum.INPUT });\n const outputValues = et.getStructContents({ types, target: TargetEnum.OUTPUT });\n const inputNativeValues = et.getNativeEnum({ types });\n const outputNativeValues = et.getNativeEnum({ types });\n const typeAnnotations = et.getStructDeclaration({ types });\n\n return {\n structName,\n inputValues,\n outputValues,\n recycleRef: inputValues === outputValues, // reduces duplication\n inputNativeValues,\n outputNativeValues,\n typeAnnotations,\n };\n })\n .sort((a, b) => (a.structName < b.structName ? -1 : 1));\n\n return { enums };\n}\n","import { uniq } from 'ramda';\n\nimport type { IType } from '../../types/interfaces/IType';\n\nconst caseInsensitiveSort = (a: string, b: string) =>\n a.toLowerCase().localeCompare(b.toLowerCase());\n\nexport function formatImports(params: { types: IType[]; baseMembers?: string[] }) {\n const { types, baseMembers = [] } = params;\n\n const members = types.flatMap((t) => t.requiredFuelsMembersImports);\n const imports = uniq(baseMembers.concat(members).sort(caseInsensitiveSort));\n\n return {\n imports: imports.length ? imports : undefined,\n };\n}\n","import type { StructType } from '../../abi/types/StructType';\nimport { TargetEnum } from '../../types/enums/TargetEnum';\nimport type { IType } from '../../types/interfaces/IType';\n\nexport function formatStructs(params: { types: IType[] }) {\n const { types } = params;\n\n const structs = types\n .filter((t) => t.name === 'struct')\n .map((t) => {\n const st = t as StructType; // only structs here\n const structName = st.getStructName();\n const inputValues = st.getStructContents({ types, target: TargetEnum.INPUT });\n const outputValues = st.getStructContents({ types, target: TargetEnum.OUTPUT });\n const typeAnnotations = st.getStructDeclaration({ types });\n return {\n structName,\n typeAnnotations,\n inputValues,\n outputValues,\n recycleRef: inputValues === outputValues, // reduces duplication\n };\n })\n .sort((a, b) => (a.structName < b.structName ? -1 : 1));\n\n return { structs };\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { versions, abi } = params;\n const { camelizedName, capitalizedName, types, functions, commonTypesInUse, configurables } = abi;\n\n /*\n First we format all attributes\n */\n const functionsTypedefs = functions.map((f) => f.getDeclaration());\n\n const functionsFragments = functions.map((f) => f.name);\n\n const encoders = functions.map((f) => ({\n functionName: f.name,\n input: f.attributes.inputs,\n }));\n\n const decoders = functions.map((f) => ({\n functionName: f.name,\n }));\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['FunctionFragment', 'InvokeFunction'],\n });\n\n const { rawContents, storageSlotsContents } = params.abi;\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n const storageSlotsJsonString = storageSlotsContents ?? '[]';\n\n /*\n And finally render template\n */\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n camelizedName,\n capitalizedName,\n commonTypesInUse: commonTypesInUse.join(', '),\n functionsTypedefs,\n functionsFragments,\n encoders,\n decoders,\n structs,\n enums,\n imports,\n abiJsonString,\n storageSlotsJsonString,\n configurables,\n },\n });\n\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderMainTemplate } from '../templates/predicate/main';\n\n/**\n * Render all Predicate-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assemblePredicates(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName: name } = abi;\n\n const factoryFilepath = `${outputDir}/${name}.ts`;\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { abi, versions } = params;\n\n const { types, configurables } = abi;\n\n const {\n rawContents,\n capitalizedName,\n hexlifiedBinContents: hexlifiedBinString,\n commonTypesInUse,\n } = params.abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n\n const func = abi.functions.find((f) => f.name === 'main');\n\n if (!func) {\n throw new FuelError(ErrorCode.ABI_MAIN_METHOD_MISSING, `ABI doesn't have a 'main()' method.`);\n }\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['Predicate', 'Provider', 'InputValue', 'PredicateParams', 'decompressBytecode'],\n });\n\n const { prefixedInputs: inputs, output } = func.attributes;\n\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n inputs,\n output,\n structs,\n enums,\n abiJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n capitalizedName,\n imports,\n configurables,\n commonTypesInUse: commonTypesInUse.join(', '),\n },\n });\n\n return text;\n}\n","import type { BinaryVersions } from '@fuel-ts/versions';\nimport { join } from 'path';\n\nimport type { Abi } from '../abi/Abi';\nimport type { IFile } from '../index';\nimport { renderCommonTemplate } from '../templates/common/common';\nimport { renderIndexTemplate } from '../templates/common/index';\nimport { renderMainTemplate } from '../templates/script/main';\n\n/**\n * Render all Script-related templates and returns\n * an array of `IFile` with them all. For here on,\n * the only thing missing is to write them to disk.\n */\nexport function assembleScripts(params: {\n abis: Abi[];\n outputDir: string;\n versions: BinaryVersions;\n}) {\n const { abis, outputDir, versions } = params;\n\n const files: IFile[] = [];\n const usesCommonTypes = abis.find((a) => a.commonTypesInUse.length > 0);\n\n abis.forEach((abi) => {\n const { capitalizedName } = abi;\n\n const factoryFilepath = `${outputDir}/${capitalizedName}.ts`;\n\n const factory: IFile = {\n path: factoryFilepath,\n contents: renderMainTemplate({ abi, versions }),\n };\n\n files.push(factory);\n });\n\n // Includes index file\n const indexFile: IFile = {\n path: `${outputDir}/index.ts`,\n contents: renderIndexTemplate({ files, versions }),\n };\n\n files.push(indexFile);\n\n // Conditionally includes `common.d.ts` file if needed\n if (usesCommonTypes) {\n const commonsFilepath = join(outputDir, 'common.d.ts');\n const file: IFile = {\n path: commonsFilepath,\n contents: renderCommonTemplate({ versions }),\n };\n files.push(file);\n }\n\n return files;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\nimport { compressBytecode } from '@fuel-ts/utils';\nimport type { BinaryVersions } from '@fuel-ts/versions';\n\nimport type { Abi } from '../../abi/Abi';\nimport { renderHbsTemplate } from '../renderHbsTemplate';\nimport { formatEnums } from '../utils/formatEnums';\nimport { formatImports } from '../utils/formatImports';\nimport { formatStructs } from '../utils/formatStructs';\n\nimport mainTemplate from './main.hbs';\n\nexport function renderMainTemplate(params: { abi: Abi; versions: BinaryVersions }) {\n const { abi, versions } = params;\n\n const { types, configurables } = abi;\n\n const {\n rawContents,\n capitalizedName,\n hexlifiedBinContents: hexlifiedBinString,\n commonTypesInUse,\n } = params.abi;\n\n const abiJsonString = JSON.stringify(rawContents, null, 2);\n\n const func = abi.functions.find((f) => f.name === 'main');\n\n if (!func) {\n throw new FuelError(ErrorCode.ABI_MAIN_METHOD_MISSING, `ABI doesn't have a 'main()' method.`);\n }\n\n const { enums } = formatEnums({ types });\n const { structs } = formatStructs({ types });\n const { imports } = formatImports({\n types,\n baseMembers: ['Script', 'Account', 'decompressBytecode'],\n });\n\n const { prefixedInputs: inputs, output } = func.attributes;\n\n const text = renderHbsTemplate({\n template: mainTemplate,\n versions,\n data: {\n inputs,\n output,\n structs,\n enums,\n abiJsonString,\n compressedBytecode: compressBytecode(hexlifiedBinString),\n capitalizedName,\n imports,\n configurables,\n commonTypesInUse: commonTypesInUse.join(', '),\n },\n });\n\n return text;\n}\n","import { ErrorCode, FuelError } from '@fuel-ts/errors';\n\nimport { ProgramTypeEnum } from '../types/enums/ProgramTypeEnum';\n\nconst upperFirst = (s: string): string => s[0].toUpperCase() + s.slice(1);\n\nexport function validateBinFile(params: {\n abiFilepath: string;\n binFilepath: string;\n binExists: boolean;\n programType: ProgramTypeEnum;\n}) {\n const { abiFilepath, binFilepath, binExists, programType } = params;\n\n const isScript = programType === ProgramTypeEnum.SCRIPT;\n\n if (!binExists && isScript) {\n throw new FuelError(\n ErrorCode.BIN_FILE_NOT_FOUND,\n [\n `Could not find BIN file for counterpart ${upperFirst(programType)} ABI.`,\n ` - ABI: ${abiFilepath}`,\n ` - BIN: ${binFilepath}`,\n programType,\n ].join('\\n')\n );\n }\n}\n","export function upperFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n"],"mappings":"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GAAG,KAAK,EAC3e,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG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EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,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","names":["escape","badChars","possible","escapeChar","chr","extend","obj","i","key","toString","isFunction","value","exports","isArray","indexOf","array","len","escapeExpression","string","isEmpty","createFrame","object","frame","blockParams","params","ids","appendContextPath","contextPath","id","errorProps","Exception","message","node","loc","line","endLineNumber","column","endColumn","tmp","idx","instance","context","options","inverse","fn","_utils","data","instance","context","options","_exception2","fn","inverse","ret","data","contextPath","_utils","execIteration","field","index","last","j","newContext","iterator","it","priorKey","key","instance","_exception2","instance","conditional","options","_exception2","_utils","instance","args","options","i","level","instance","obj","field","options","instance","context","options","_exception2","_utils","fn","data","registerDefaultHelpers","instance","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","instance","fn","props","container","options","ret","context","original","_utils","registerDefaultDecorators","instance","_decoratorsInline2","logger","level","levelMap","_utils","method","message","_len","_key","createNewLookupObject","sources","_len","_key","_utils","loggedProperties","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","_createNewLookupObject","resultIsAllowed","result","protoAccessControl","propertyName","checkWhiteList","protoAccessControlForType","logUnexpecedPropertyAccessOnce","_logger2","resetLoggedProperties","VERSION","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","HandlebarsEnvironment","helpers","partials","decorators","_helpers","_decorators","_logger2","name","fn","_utils","_exception2","partial","_internalProtoAccess","log","SafeString","string","wrapHelper","helper","transformOptionsFn","wrapper","options","Utils","_interopRequireWildcard","_utils","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","_exception2","template","templateSpec","env","templateWasPrecompiledWithCompilerV7","invokePartialWrapper","partial","context","options","extendedOptions","result","lines","i","l","container","obj","name","loc","parent","propertyName","_internalProtoAccess","depths","len","current","ret","data","declaredBlockParams","blockParams","programWrapper","fn","wrapProgram","value","depth","param","common","initData","main","executeDecorators","mergedHelpers","wrapHelpersToPassLookupProperty","keepHelperInHelpers","_helpers","prog","currentDepths","resolvePartial","invokePartial","currentPartialBlock","partialBlock","noop","props","helperName","helper","passLookupPropertyOption","lookupProperty","_internalWrapHelper","Handlebars","$Handlebars","base","_interopRequireWildcard","_handlebarsBase","Utils","_handlebarsUtils","runtime","_handlebarsRuntime","create","hb","_handlebarsSafeString2","_handlebarsException2","spec","inst","_handlebarsNoConflict2","AST","node","path","handlebars","parser","yytext","yyleng","yylineno","yy","yystate","$$","_$","$0","inverse","program","str","hash","input","self","stack","vstack","lstack","table","recovering","TERROR","EOF","yyloc","ranges","popStack","n","lex","token","symbol","preErrorSymbol","state","action","a","r","yyval","p","len","newState","expected","errStr","lexer","ch","lines","oldLines","past","next","pre","c","match","tempMatch","index","col","rules","i","condition","yy_","$avoiding_name_collisions","YY_START","strip","start","end","YYSTATE","Parser","exports","Visitor","node","name","value","_exception2","array","i","l","object","ret","program","visitSubExpression","visitBlock","visitPartial","partial","hash","pair","mustache","block","WhitespaceControl","options","_visitor2","program","doStandalone","isRoot","body","i","l","current","strip","_isPrevWhitespace","isPrevWhitespace","_isNextWhitespace","isNextWhitespace","openStandalone","closeStandalone","inlineStandalone","omitRight","omitLeft","block","inverse","firstInverse","lastInverse","inverseStrip","mustache","node","prev","sibling","next","multiple","original","validateClose","open","close","errorNode","_exception2","SourceLocation","source","locInfo","id","token","stripFlags","stripComment","comment","preparePath","data","parts","loc","original","dig","depth","i","l","part","isLiteral","prepareMustache","path","params","hash","strip","escapeFlag","escaped","decorator","prepareRawBlock","openRawBlock","contents","program","prepareBlock","openBlock","inverseAndProgram","inverted","inverse","inverseStrip","prepareProgram","statements","firstLoc","lastLoc","preparePartialBlock","Helpers","_interopRequireWildcard","_helpers","_parser2","yy","_utils","parseWithoutProcessing","input","options","locInfo","ast","parse","strip","_whitespaceControl2","slice","Compiler","other","len","i","opcode","otherOpcode","argEquals","program","options","_utils","childCompiler","result","guid","node","_exception2","ret","body","bodyLength","block","transformLiteralToPath","inverse","type","decorator","params","path","partial","partialName","isDynamic","indent","partialBlock","mustache","content","sexpr","name","isBlock","_ast2","scoped","blockParamId","string","number","bool","hash","pairs","l","depth","isSimple","isBlockParam","isHelper","isEligible","_name","val","value","blockParamIndex","blockParamChild","omitEmpty","blockParams","param","precompile","input","env","ast","environment","compile","compiled","compileInput","templateSpec","context","execOptions","setupOptions","data","depths","a","b","literal","require_base64","__commonJSMin","exports","intToCharMap","number","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","require_base64_vlq","__commonJSMin","exports","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","encoded","digit","vlq","aStr","aIndex","aOutParam","strLen","result","shift","continuation","require_util","__commonJSMin","exports","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","urlGenerate","aParsedUrl","url","normalize","aPath","path","isAbsolute","parts","part","up","i","join","aRoot","aPathUrl","aRootUrl","joined","relative","level","index","supportsNullProto","obj","identity","s","toSetString","aStr","isProtoString","fromSetString","length","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","strcmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","aStr1","aStr2","compareByGeneratedPositionsInflated","parseSourceMapInput","str","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","require_array_set","__commonJSMin","exports","util","has","hasNativeMap","ArraySet","aArray","aAllowDuplicates","set","i","len","aStr","sStr","isDuplicate","idx","aIdx","require_mapping_list","__commonJSMin","exports","util","generatedPositionAfter","mappingA","mappingB","lineA","lineB","columnA","columnB","MappingList","aCallback","aThisArg","aMapping","require_source_map_generator","__commonJSMin","exports","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","aArgs","aSourceMapConsumer","sourceRoot","generator","mapping","newMapping","sourceFile","sourceRelative","content","generated","original","source","name","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aSource","aName","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","next","nameIdx","sourceIdx","mappings","i","len","aSources","aSourceRoot","key","map","require_binary_search","__commonJSMin","exports","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","cmp","index","require_quick_sort","__commonJSMin","exports","swap","ary","x","y","temp","randomIntInRange","low","high","doQuickSort","comparator","p","r","pivotIndex","pivot","j","q","require_source_map_consumer","__commonJSMin","exports","util","binarySearch","ArraySet","base64VLQ","quickSort","SourceMapConsumer","aSourceMap","aSourceMapURL","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","aStr","index","c","aSourceRoot","aCallback","aContext","aOrder","context","order","mappings","sourceRoot","mapping","source","aArgs","line","needle","originalLine","originalColumn","version","sources","names","sourcesContent","file","s","aSource","relativeSource","i","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","length","srcMapping","destMapping","Mapping","generatedLine","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","temp","originalMappings","str","segment","end","value","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","nextMapping","name","sc","nullOnMissing","url","fileUriAbsPath","sections","lastOffset","offset","offsetLine","offsetColumn","j","sectionIndex","section","cmp","content","generatedPosition","ret","sectionMappings","adjustedMapping","require_source_node","__commonJSMin","exports","SourceMapGenerator","util","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aSource","aChunks","aName","aGeneratedCode","aSourceMapConsumer","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastGeneratedColumn","lastMapping","mapping","addMappingWithCode","nextLine","code","sourceFile","content","source","aChunk","chunk","i","aFn","len","aSep","newChildren","aPattern","aReplacement","lastChild","aSourceFile","aSourceContent","sources","str","aArgs","generated","map","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","original","idx","length","sourceContent","require_source_map","__commonJSMin","exports","SourceNode","SourceMap","line","column","srcFile","chunks","_utils","castChunk","chunk","codeGen","loc","ret","i","len","CodeGen","source","iter","fn","type","params","str","obj","pairs","key","value","_this","entries","Literal","value","JavaScriptCompiler","parent","name","revision","_base","versions","source","location","explicit","_utils","environment","options","context","asObject","opcodes","opcode","firstLoc","i","l","_exception2","fn","ret","programs","_context","decorators","_codeGen2","varDeclarations","locals","aliasCount","alias","node","_this","params","isSimple","appendOnly","appendFirst","sourceSeen","bufferStart","bufferEnd","line","blockHelperMissing","blockName","current","content","local","depth","parts","falsy","strict","scoped","blockParamId","type","strictLookup","len","lookup","_this2","string","omitEmpty","hash","guid","paramSize","foundDecorator","nonHelper","helper","possibleFunctionCalls","functionLookupCode","functionCall","items","separator","result","helperCall","helperName","isDynamic","indent","key","id","child","children","compiler","existing","index","programParams","expr","item","callback","prefix","stack","createdStack","usedLiteral","top","_name","inlineStack","entry","wrapped","inline","str","obj","blockHelper","paramsInit","foundHelper","callContext","contexts","types","ids","objectArgs","param","inverse","program","useRegister","reservedWords","compilerWords","requireTerminal","_create","_handlebarsRuntime2","create","hb","input","options","_handlebarsCompilerCompiler","_handlebarsCompilerAst2","_handlebarsCompilerJavascriptCompiler2","_handlebarsCompilerBase","inst","_handlebarsNoConflict2","_handlebarsCompilerVisitor2","print","ast","PrintVisitor","_visitor2","string","out","i","l","program","body","blockParams","mustache","block","partial","content","comment","sexpr","params","paramStrings","hash","id","path","number","bool","pairs","joinedPairs","pair","require_lib","__commonJSMin","exports","module","handlebars","printer","extension","filename","fs","templateString","__require","fs","readFileSync","writeFileSync","import_handlebars","join","join","join","AType","params","_EmptyType","_params","EmptyType","__publicField","_OptionType","OptionType","findType","types","typeId","foundType","tid","FuelError","ErrorCode","getFunctionInputs","inputs","isMandatory","result","input","type","isTypeMandatory","parseTypeArguments","typeArguments","parentTypeId","target","attributeKey","buffer","parentType","parentLabel","typeArgument","currentTypeId","currentLabel","nestedParsed","output","resolveInputLabel","typeDecl","Function","shouldPrefixParams","isOptional","name","prefixedInputs","makeFunction","rawAbiFunction","parseFunctions","rawAbiFunctions","_ArrayType","arrayLen","outputs","component","inputLabel","outputLabel","attributes","inputTypes","outputTypes","ArrayType","_StrType","StrType","_B256Type","B256Type","_B512Type","B512Type","_BoolType","BoolType","_BytesType","capitalizedName","BytesType","extractStructName","rawAbiType","regex","matches","match","errorMessage","_ResultType","ResultType","_EnumType","isAMatch","shouldBeIgnored","r","structName","typeHash","hash","row","components","enumComponents","typeParameters","EnumType","_EvmAddressType","EvmAddressType","_GenericType","label","GenericType","_U8Type","U8Type","_U64Type","U64Type","_RawUntypedPtr","RawUntypedPtr","_RawUntypedSlice","RawUntypedSlice","_StdStringType","StdStringType","_StrSliceType","StrSliceType","_StructType","StructType","_TupleType","TupleType","_U16Type","U16Type","_U256Type","U256Type","_U32Type","U32Type","_VectorType","VectorType","supportedTypes","makeType","TypeClass","tc","shouldSkipAbiType","parseTypes","parsedType","findTypeByConcreteId","id","x","findConcreteTypeById","abi","finsertTypeIdByConcreteTypeId","concreteType","parseComponents","parseFunctionTypeArguments","cTypeId","self","parseConcreteType","concreteTypeId","concrete","transpileAbi","m","t","functions","fn","configurables","conf","loggedTypes","log","Configurable","Abi","filepath","outputDir","rawContents","hexlifiedBinContents","programType","storageSlotsContents","abiNameRegex","abiName","normalizeString","transpiled","rawAbiTypes","rawAbiConfigurables","rawAbiConfigurable","customTypesTable","typeName","commonTypeLabel","ProgramTypeEnum","renderHbsTemplate","data","template","versions","options","renderTemplate","Handlebars","renderHeaderTemplate","header_default","renderCommonTemplate","common_default","renderIndexTemplate","files","members","f","renderFactoryTemplate","camelizedName","hexlifiedBinString","abiJsonString","factory_default","compressBytecode","formatEnums","et","inputValues","outputValues","inputNativeValues","outputNativeValues","typeAnnotations","a","b","caseInsensitiveSort","formatImports","baseMembers","imports","uniq_default","formatStructs","st","renderMainTemplate","commonTypesInUse","functionsTypedefs","functionsFragments","encoders","decoders","enums","structs","storageSlotsJsonString","main_default","assembleContracts","abis","usesCommonTypes","mainFilepath","factoryFilepath","main","factory","indexFile","file","join","func","assemblePredicates","assembleScripts","upperFirst","s","validateBinFile","abiFilepath","binFilepath","binExists","AbiTypeGen","abiFiles","binFiles","storageSlotsFiles","abiFile","relatedBinFile","path","storageSlotFilepath","relatedStorageSlotsFile","import_mkdirp","path","upperFirst","str","codegen","abisDir","outDir","fs","numFiles","codegenInternal","source_default","patchImport","contents","allFiles","allABIFiles","f","path","abiFiles","filepath","readFileSync","abiTypeGen","AbiTypeGen","ProgramTypeEnum","versions","mkdirp","count","file","content","writeFileSync","abi","name","filePath","importedTypes","collectImportedTypes","logByTypes","logType","metadataTypeId","t","typeName","ids","s","getTypeName","id","genOnLogFunction","collectImportedTypes","types","ret","type","genOnLogFunction","ids","getTypeName","id","upperFirst"]}
|