@zenuml/core 2.0.0 → 2.0.2
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/Integration/vanilla-js/index.html +8 -13
- package/dist/zenuml/core.common.js +37977 -0
- package/dist/zenuml/core.common.js.map +1 -0
- package/dist/{vue-sequence.css → zenuml/core.css} +0 -0
- package/dist/zenuml/core.umd.js +37988 -0
- package/dist/zenuml/core.umd.js.map +1 -0
- package/dist/{vue-sequence.umd.min.js → zenuml/core.umd.min.js} +3 -3
- package/dist/zenuml/core.umd.min.js.map +1 -0
- package/package.json +6 -6
- package/coverage/clover.xml +0 -6
- package/coverage/coverage-final.json +0 -1
- package/coverage/lcov-report/Interaction.vue.html +0 -532
- package/coverage/lcov-report/Owner.js.html +0 -175
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -79
- package/coverage/lcov-report/components/interaction/Interaction.vue.html +0 -544
- package/coverage/lcov-report/components/interaction/index.html +0 -110
- package/coverage/lcov-report/index.html +0 -95
- package/coverage/lcov-report/positioning/david/DavidEisenstat2.ts.html +0 -196
- package/coverage/lcov-report/positioning/david/index.html +0 -110
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -170
- package/coverage/lcov.info +0 -0
- package/cypress/fixtures/example.json +0 -5
- package/cypress/fixtures/profile.json +0 -5
- package/cypress/fixtures/users.json +0 -232
- package/cypress/integration/__image_snapshots__/Smoke test creation #0.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test fragment #0.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test fragmentIssue #0.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test interaction #0.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test return #0.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test return #1.png +0 -0
- package/cypress/integration/__image_snapshots__/Smoke test should load the home page #0.png +0 -0
- package/cypress/integration/smoke.spec.js +0 -64
- package/cypress/plugins/index.js +0 -30
- package/cypress/support/commands.js +0 -25
- package/cypress/support/index.js +0 -20
- package/cypress/videos/smoke.spec.js.mp4 +0 -0
- package/gen/css3.interp +0 -214
- package/gen/css3.tokens +0 -92
- package/gen/css3BaseListener.java +0 -1106
- package/gen/css3BaseVisitor.java +0 -636
- package/gen/css3Lexer.interp +0 -251
- package/gen/css3Lexer.java +0 -672
- package/gen/css3Lexer.tokens +0 -92
- package/gen/css3Listener.java +0 -939
- package/gen/css3Parser.java +0 -8113
- package/gen/css3Visitor.java +0 -566
- package/gen/sequenceLexer.interp +0 -206
- package/gen/sequenceLexer.java +0 -419
- package/gen/sequenceLexer.tokens +0 -104
- package/gen/sequenceParser.interp +0 -180
- package/gen/sequenceParser.java +0 -4659
- package/gen/sequenceParser.tokens +0 -101
- package/gen/sequenceParserBaseListener.java +0 -830
- package/gen/sequenceParserBaseVisitor.java +0 -475
- package/gen/sequenceParserListener.java +0 -703
- package/gen/sequenceParserVisitor.java +0 -425
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zenuml/core.umd.js","mappings":"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;AACA;AACA;AACA;AACA;;AAEA,+CAAe;;;;;;;;;;;AClBf;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,mBAAmB;AAC9C,IAAI,mBAAmB;AACvB;AACA;AACA;AACA,2CAA2C,wBAAwB;AACnE;AACA,qBAAqB,8BAA8B;AACnD,IAAI,4BAA4B;AAChC,IAAI,wBAAwB;;AAE5B,YAAY,iCAAwB;AACpC,YAAY,iCAAwB;AACpC,eAAe,oCAAiC;;AAEhD;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS,mBAAmB;AAC5B;;AAEA;AACA,kDAAkD,oBAAoB;AACtE,QAAQ,WAAW;AACnB;;AAEA,oBAAoB,gBAAgB;AACpC,KAAK,gBAAgB,IAAI,gBAAgB,SAAS,WAAW,SAAS;AACtE;AACA,KAAK,iBAAiB;AACtB;AACA;AACA,KAAK,wBAAwB;AAC7B;AACA,8BAA8B,iBAAiB;AAC/C;AACA;;AAEA,2BAA2B,kBAAkB;AAC7C,KAAK,qBAAqB,cAAc,eAAe;AACvD;AACA;AACA;AACA,SAAS,gBAAgB,0BAA0B,iBAAiB;AACpE;AACA;AACA,KAAK,oBAAoB,KAAK,WAAW,oBAAoB;AAC7D,SAAS;AACT,SAAS,cAAc;AACvB;AACA,KAAK,gBAAgB;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA,YAAY,YAAY,gCAAgC,QAAQ;AAChE,IAAI,YAAY;AAChB;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAA2B;;;;;;;;ACtX3B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uCAAoC;;AAEtD;AACA,oBAAoB,mBAAO,CAAC,IAAI;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;;;;;;;;ACtEnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,oBAAoB;AACvD,IAAI,mBAAmB;AACvB;;AAEA,kBAAkB,uCAA8B;;AAEhD;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,4BAA4B;AACtD;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD,QAAQ,4BAA4B;AACpC,QAAQ,oCAAoC;AAC5C,eAAe,sBAAsB;AACrC;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAA0B;;;;;;;;ACpE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,2BAA2B;AAClD;AACA,IAAI,yBAAyB;AAC7B;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,+CAA+C,WAAW,GAAG,WAAW;AACxE,IAAI,WAAW;AACf;AACA;AACA;AACA,KAAK,6BAA6B;AAClC,IAAI,yBAAyB;AAC7B,SAAS,wBAAwB;AACjC;AACA;AACA;AACA,oCAAoC,cAAc;AAClD,IAAI,mBAAmB;AACvB;AACA;AACA;;AAEA,YAAY,iCAAwB;AACpC,0BAA0B,uDAAoD;;AAE9E;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;;;;;;;ACvGzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,uCAAoC;AACtD;AACA,oBAAoB,mBAAO,CAAC,IAAI;;AAEhC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB;;;;;;;;ACzBlB;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,iCAAwB;AACpC,mBAAO,CAAC,IAAyB;AACjC,mBAAO,CAAC,IAA2B;;AAEnC;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,eAAe;AACf;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB;;;;;;;;ACtInB;AACA;AACA;AACA;;AAEA;;AAEA,YAAY,iCAAwB;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,MAAM;AACN;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA,WAAW,yBAAyB;AACpC,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA,gBAAgB;AAChB,SAAmB;;;;;;;;ACzSnB;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,+BAAsB;AAChC,aAAa,kCAAyB;AACtC,YAAY,iCAAwB;AACpC,gBAAgB,8CAAoC;AACpD,eAAe,oCAAiC;AAChD,kBAAkB,gDAAoC;AACtD,oBAAoB,yCAAuC;AAC3D,qBAAqB,0CAA0C;AAC/D,uBAAuB,4CAA4C;AACnE,yBAAyB,8CAA8C;AACvE,kCAAkC,uDAAuD;;AAEzF,SAAS,mBAAO,CAAC,IAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;;;AAGA;AACA;AACA,UAAU,eAAe;AACzB,2BAA2B,QAAQ;AACnC;AACA,sDAAsD,WAAW;AACjE;AACA;AACA,iEAAiE,QAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,SAAS;AACnD,cAAc,UAAU;AACxB;AACA,UAAU,WAAW,IAAI,YAAY;AACrC,IAAI,SAAS,aAAa,sBAAsB;AAChD,OAAO,WAAW,QAAQ,YAAY;AACtC,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA,IAAI,qBAAqB;AACzB,+CAA+C,YAAY;AAC3D;AACA;AACA,8CAA8C,SAAS;AACvD,cAAc,UAAU;AACxB;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,SAAS;AACnD,cAAc,UAAU;AACxB;AACA,UAAU,WAAW,IAAI,YAAY,KAAK,iBAAiB;AAC3D,oBAAoB,SAAS,aAAa,sBAAsB;AAChE,uBAAuB,WAAW,QAAQ,YAAY,KAAK,cAAc;AACzE,IAAI,YAAY,KAAK,iBAAiB;AACtC,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA,IAAI,qBAAqB;AACzB,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA,IAAI,0BAA0B;AAC9B;AACA;AACA,IAAI,oBAAoB;AACxB,wBAAwB,YAAY;AACpC,eAAe,YAAY,mCAAmC;AAC9D,mDAAmD,kBAAkB;AACrE;AACA,sBAAsB,kBAAkB;AACxC,kEAAkE;AAClE,OAAO,WAAW;AAClB;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAmB;;;;;;;;;ACrMnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY,iCAAwB;AACpC,iBAAiB,+CAAkC;AACnD,yBAAyB,uDAAkD;AAC3E,4BAA4B,gDAA8C;AAC1E,gCAAgC,qDAAmD;;AAEnF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,iDAAiD;AACjD;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA,aAAa;;;;;;;;AClXb;AACA;AACA;AACA;;AAEA,YAAY,iCAAwB;AACpC,wBAAwB,6CAAwC;AAChE,iBAAiB,+CAAkC;AACnD,2BAA2B,yDAAqD;AAChF,sBAAsB,2CAAgD;AACtE,gCAAgC,8DAAoE;AACpG,mBAAmB,wCAAmC;AACtD,gBAAgB,qCAAgC;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,2BAA2B;AAC5C;AACA;AACA;AACA,SAAS,yBAAyB;AAClC;AACA;AACA;AACA,+CAA+C,WAAW;AAC1D;AACA,UAAU,kBAAkB,cAAc;AAC1C,KAAK,qBAAqB;AAC1B,mBAAmB,kBAAkB,cAAc;AACnD;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uEAAuE;AACvE,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,YAAY;AACnD,aAAa,uCAAuC,KAAK,iBAAiB;AAC1E;AACA;AACA;AACA,IAAI,yCAAyC;AAC7C,qCAAqC,2BAA2B;AAChE,IAAI,YAAY;AAChB,IAAI,yCAAyC;AAC7C,8BAA8B,sCAAsC;AACpE;AACA;AACA;AACA;AACA,IAAI,aAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,QAAQ,iBAAiB;AACzB;AACA;AACA,IAAI,yCAAyC;AAC7C,qCAAqC,2BAA2B;AAChE,IAAI,YAAY;AAChB,IAAI,yCAAyC;AAC7C,8BAA8B,sCAAsC;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,gBAAgB;AAC9B;AACA;AACA;AACA;AACA;AACA,IAAI,gCAAgC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO,aAAa;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,gBAAgB;AAC3B;AACA,UAAU,gBAAgB,IAAI,YAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,MAAM;AAClE;AACA;AACA;AACA;;AAEA,YAAY,iCAAwB;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,4CAA4C;AACvE;AACA,4CAA4C,SAAS;AACrD,wDAAwD,SAAS;AACjE,IAAI,QAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAyC;AACrE,IAAI,wCAAwC;AAC5C;AACA;AACA,IAAI,6CAA6C;AACjD,IAAI,yCAAyC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,cAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA,SAAS,mBAAmB;;AAE5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,cAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY,IAAI,cAAc;AAC1C,uBAAuB,YAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,mCAAmC,kBAAkB,KAAK,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,qBAAqB;AACnD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,kBAAkB,WAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uCAAuC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B,kCAAkC,iDAAiD;AACnF,gCAAgC,yCAAyC;AACzE,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc;;;;;;;ACjqBd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,gDAAoC;AACtD,WAAW,mBAAO,CAAC,IAAa;AAChC;AACA;AACA;AACA;AACA,eAAe,oCAAiC;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB;;;;;;;AChOzB;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,gDAAoC;AACtD,WAAW,gCAAuB;AAClC,UAAU,+BAAsB;;AAEhC;AACA;AACA;;AAEA,eAAe,SAAS;AACxB,IAAI,cAAc;AAClB;AACA;;AAEA,eAAe,SAAS,wCAAwC;AAChE,2BAA2B,oBAAoB;AAC/C,IAAI,SAAS,GAAG,2BAA2B;AAC3C;AACA;;AAEA;AACA;;AAEA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA,eAAe,mDAAmD,EAAE;AACpE,kBAAkB;AAClB;AACA,mBAAmB,QAAQ,iBAAiB;AAC5C,WAAW,2CAA2C,QAAQ;AAC9D,aAAa;AACb;AACA;AACA,mBAAmB,QAAQ,iBAAiB;AAC5C,WAAW,2CAA2C,QAAQ;AAC9D,mCAAmC;AACnC;AACA;AACA,WAAW,2CAA2C,YAAY;AAClE,YAAY;AACZ;AACA;AACA;AACA;;AAEA,wBAAwB,eAAe;AACvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,yBAAyB;AAC3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,gBAAgB;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU,eAAe,yBAAyB,eAAe;AACjE;AACA,oBAAoB,2BAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,gBAAgB;AAChB,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,kBAAkB,8BAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,mBAAmB,WAAW,yBAAyB;AACrE,WAAW,eAAe,IAAI,oBAAoB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,kCAAkC;AAChD;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,0BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,OAAO;AACV;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,SAAS,IAAI,SAAS;AAC5D,IAAI,cAAc,yCAAyC,SAAS;AACpE,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,OAAO,eAAe,0BAA0B,QAAQ,cAAc;AACtE;AACA;AACA,OAAO,eAAe,iBAAiB,cAAc;AACrD,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,0BAA0B,YAAY;AACtC;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,mCAAmC;AACnC;AACA,GAAG;AACH;AACA,mCAAmC;AACnC,IAAI,0CAA0C;AAC9C;AACA;AACA;AACA;AACA,IAAI,0CAA0C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,8BAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iCAAiC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,YAAY;AACZ,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;AAClF;AACA;AACA;AACA,iCAAiC;AACjC;AACA,KAAK,OAAO;AACZ;AACA;AACA;AACA;AACA,WAAW;AACX,WAAW;AACX,IAAI,kDAAkD;AACtD;AACA;AACA;AACA,IAAI,OAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gCAAgC;AACjE,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,gBAAgB,WAAW;AAC7D;AACA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb,yBAAyB;AACzB,8BAA8B;AAC9B,kCAAkC;AAClC,wCAAwC;AACxC,kCAAkC;;;;;;;;AC7tBlC;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,iCAAwB;AACpC,2BAA2B,yDAAqD;AAChF,yBAAyB,uDAAmD;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,WAAW;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,WAAW;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA,IAAI,iDAAiD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;;AAGD,SAAkB;;;;;;;;AClJlB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,oCAA+B;AAC9C,uBAAuB,4CAAuC;AAC9D,yBAAyB,8CAAuC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAmB;AACnB,YAAY,iCAA6B;;;AAGzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3JA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB,sBAAsB;AACtB,oBAAoB,aAAa;AACjC,mBAAmB,aAAa;AAChC,yBAAyB;AACzB,mBAAmB;AACnB,qBAAqB;AACrB,oBAAoB;AACpB;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,+CAA+C,WAAW;AAC1D,IAAI,WAAW,QAAQ,iBAAiB;AACxC;AACA;AACA,mDAAmD,YAAY;AAC/D;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa,YAAY;AACzB,IAAI,gBAAgB;AACpB;;AAEA,qBAAqB,mBAAmB,sBAAsB,YAAY;AAC1E;AACA;AACA,OAAO,gBAAgB,WAAW,mBAAmB;AACrD,oDAAoD,cAAc;AAClE,QAAQ,YAAY,WAAW,eAAe,cAAc,cAAc;AAC1E,sCAAsC,gBAAgB,OAAO;AAC7D,2CAA2C,6BAA6B;AACxE,IAAI,4BAA4B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa;AACb,mBAAmB;;;;;;;;ACtJnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,aAAa,iCAAiC;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA,MAAM;AACN,+BAA+B,qBAAqB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,iBAAiB,sCAAsC;AACvD,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY;AACZ,WAAW;AACX,WAAW;AACX,cAAc;AACd,eAAe;AACf,kBAAkB;AAClB,iBAAiB;AACjB,wBAAwB;AACxB,qBAAqB;AACrB,iBAAiB;AACjB,mBAAmB;;;;;;;;AClcnB;AACA;AACA;AACA;;AAEA,kBAAkB,+CAAuC;AACzD,kBAAkB,gDAAuC;;AAEzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,6CAA6C,oBAAoB,WAAW;AAC5E;AACA,4CAA4C,mBAAmB;AAC/D;AACA;AACA;;AAEA;AACA;;AAEA,qEAAqE,QAAQ;AAC7E,QAAQ,WAAW;AACnB,0BAA0B,QAAQ;AAClC,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;;AAEA,+DAA+D,SAAS;AACxE,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,IAAI,mBAAmB,uBAAuB,cAAc;AAC5D;AACA;AACA;AACA,IAAI,qBAAqB;AACzB,aAAa,kBAAkB;AAC/B;AACA,UAAU,eAAe,IAAI,WAAW;AACxC,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY,iCAA2B;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,WAAW;;;;;;;AC7IX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,yCAAmC;AACvD,sBAAsB,qDAA4C;AAClE,WAAW,gCAAwB;;;AAGnC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA,SAAiB;AACjB,SAAsB;;;;;;;AC/KtB;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,WAAW,SAAS,iBAAiB,SAAS;AAC9D;AACA;AACA;;AAEA,UAAU,+BAAoB;AAC9B,YAAY,mBAAO,CAAC,IAAY;AAChC;AACA;AACA,sBAAsB,qDAA4C;AAClE,YAAY,iCAAuC;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK,sBAAsB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,YAAY;AACZ;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,IAAI,oBAAoB,SAAS,SAAS;AAC1C,IAAI,uBAAuB,GAAG,SAAS,QAAQ,qBAAqB;AACpE,IAAI,UAAU,QAAQ,iCAAiC;AACvD,IAAI,gBAAgB;AACpB;AACA,2BAA2B,8BAA8B;AACzD,IAAI,4BAA4B;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;;AAEA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,SAAoB;AACpB,SAA2B;;;;;;;;AC5P3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAiC;;;;;;;;ACxBjC;AACA;AACA;AACA;;AAEA,YAAY,iCAA2B;AACvC,UAAU,+BAAoB;AAC9B,cAAc,4CAA4B;AAC1C,gBAAgB,mBAAO,CAAC,IAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAO,CAAC,IAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gDAAuC;AACzD,eAAe,oCAAoC;AACnD,gCAAgC,8DAAgE;AAChG,mBAAmB,mBAAO,CAAC,IAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA,uBAAuB,YAAY;AACnC;AACA,0BAA0B,YAAY;AACtC;AACA,YAAY,YAAY,QAAQ,kBAAkB;AAClD,yDAAyD,eAAe;AACxE,eAAe,YAAY,YAAY;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;AACA;AACA;;AAEA,cAAc,0BAA0B;AACxC;AACA;AACA;;AAEA;AACA,cAAc,sBAAsB;AACpC;AACA;AACA;;AAEA;AACA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,KAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA,kBAAkB,4BAA4B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,gBAAgB,0BAA0B;AAC1C,QAAQ,gDAAgD;AACxD;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,+CAA+C;AAC/C,gDAAgD;AAChD,qDAAqD;AACrD,qDAAqD;AACrD,gDAAgD;AAChD,8CAA8C;AAC9C,8CAA8C;AAC9C,mDAAmD;AACnD,oDAAoD;AACpD,mDAAmD;AACnD,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA+D;AAC/D,8DAA8D;AAC9D,4DAA4D;AAC5D,4DAA4D;AAC5D,gEAAgE;AAChE,iEAAiE;AACjE,4DAA4D;AAC5D,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA,uBAAuB;;;;;;;ACrqBvB;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,6CAAqC;AACpD,mBAAmB,iDAAsC;AACzD,iCAAiC,sDAA4D;AAC7F,UAAU,+BAAyB;;AAEnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAoB;;;;;;;;ACnDpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI,6BAA6B;AACjC;AACA;AACA;AACA,2CAA2C;AAC3C,IAAI,wBAAwB;AAC5B;AACA;AACA,IAAI,kBAAkB;AACtB;AACA;AACA,IAAI,kBAAkB;AACtB;AACA;AACA,4DAA4D,WAAW;AACvE,gEAAgE,WAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uBAAuB,UAAU,KAAK,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA,aAAa,kBAAkB;AAC/B,sCAAsC;AACtC,0CAA0C,yBAAyB;AACnE,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;AAChB,kBAAkB;AAClB,qBAAqB;AACrB,uBAAuB;AACvB,qBAAqB;AACrB,oBAAoB;AACpB,sBAAsB;AACtB,qBAAqB;AACrB,wBAAwB;AACxB,yBAAyB;AACzB,yBAAyB;AACzB,0BAA0B;AAC1B,2BAA2B;AAC3B,2BAA2B;AAC3B,4BAA4B;;;;;;;;ACrU5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,SAAe;;;;;;;;;ACff;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,uBAAuB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,iCAA2B;AACvC,YAAY,iCAA2B;AACvC,UAAU,+BAAoB;AAC9B,mBAAmB,iDAAsC;AACzD,eAAe,6CAAqC;AACpD,mBAAmB,iDAAsC;AACzD,0BAA0B,wDAA6C;AACvE,wBAAwB,6CAAmD;AAC3E,iCAAiC,sDAA4D;AAC7F,oBAAoB,yCAAmC;AACvD,qBAAqB,mDAAqC;AAC1D,iBAAiB,sCAAkC;AACnD,0BAA0B,wDAAoD;AAC9E,gCAAgC,qDAAsD;;AAEtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,YAAY;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,SAAS;AAC3B,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,QAAQ,aAAa,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kCAAkC;AACpD,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sDAAsD;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA,sCAAsC,8CAA8C;AACpF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA,YAAY,YAAY;AACxB,IAAI,YAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qCAAqC,oDAAoD;AACzF;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA,mDAAmD;AACnD;AACA,gCAAgC,uCAAuC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,GAAG,QAAQ,GAAG;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6DAA6D;AAC3F,IAAI;AACJ;AACA,+BAA+B,mBAAmB;AAClD;AACA,GAAG;AACH,6BAA6B,mBAAmB;AAChD,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,mBAAmB,IAAI,WAAW;AAC5C,IAAI,iBAAiB;AACrB,IAAI,iBAAiB;AACrB,gCAAgC,qBAAqB,GAAG,qBAAqB;AAC7E,QAAQ,uBAAuB;AAC/B,4CAA4C,aAAa;AACzD;AACA,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA,uBAAuB,YAAY,yBAAyB,aAAa;AACzE;AACA;AACA,YAAY,YAAY;AACxB,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;;AAExD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,yBAAyB;;;;;;;;AC3nBzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,iBAAiB,0BAA0B;AAC5E,iCAAiC,iBAAiB,yBAAyB;AAC3E,iCAAiC,iBAAiB,uBAAuB;AACzE,iCAAiC,iBAAiB,uBAAuB;AACzE,iCAAiC,iBAAiB,0BAA0B;AAC5E,iCAAiC,iBAAiB,2BAA2B;AAC7E,iCAAiC,iBAAiB,uBAAuB;AACzE,iCAAiC,iBAAiB,uBAAuB;;AAEzE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA;AACA,mBAAmB,YAAY,yBAAyB,kBAAkB;AAC1E;AACA,WAAW,YAAY;AACvB,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,YAAY,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,IAAI,uBAAuB;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,uBAAuB;AACpE,sBAAsB,gBAAgB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,mBAAmB,eAAe,yBAAyB,qBAAqB;AAChF;AACA,WAAW,eAAe;AAC1B,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6CAA6C,qBAAqB;AAClE;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,YAAY,yBAAyB,kBAAkB;AAC1E;AACA,WAAW,YAAY;AACvB,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6CAA6C,qBAAqB;AAClE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,mBAAmB,YAAY,yBAAyB,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,mBAAmB;AAChE,sBAAsB,gBAAgB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8CAA8C,0BAA0B;AACxE;AACA;AACA,OAAO,0BAA0B;AACjC;AACA,wEAAwE,IAAI;AAC5E;AACA;;;AAGA;AACA;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC;AACA,QAAQ,yBAAyB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD,qBAAqB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA,mBAAmB,eAAe;AAClC,IAAI,yBAAyB;AAC7B,qBAAqB,eAAe;AACpC,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,yBAAyB;AACtE,sBAAsB,mBAAmB;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,mBAAmB;AAC9C,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D,IAAI,gDAAgD;;AAEpD;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA,IAAI,wCAAwC,SAAS,WAAW;AAChE;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yBAAyB,iBAAiB,kBAAkB;AAC5D,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;;AAGA,uBAAuB;AACvB,uBAAuB;AACvB,0BAA0B;AAC1B,yBAAyB;AACzB,gCAAgC;AAChC,uBAAuB;AACvB,uBAAuB;AACvB,2BAA2B;AAC3B,0BAA0B;AAC1B,uBAAuB;;;;;;;AC7WvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW;;AAEzC,gBAAgB,qCAA6B;AAC7C,+BAA+B,oDAAiD;;AAEhF;AACA;AACA,0BAA0B,kBAAkB;AAC5C,iCAAiC,gCAAgC;AACjE,gDAAgD;AAChD;AACA;AACA;;AAEA,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,IAAI,kBAAkB;AACtB;AACA;AACA;AACA,IAAI,qBAAqB,cAAc,WAAW;AAClD;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA,cAAc,2BAA2B;AACzC,OAAO,2BAA2B,KAAK,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,2BAA2B;AACzC;AACA;AACA;AACA,IAAI,wCAAwC,SAAS,WAAW;AAChE,IAAI,uBAAuB,cAAc,kBAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA,cAAc,2BAA2B;AACzC;AACA;AACA;AACA;AACA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,eAAe,YAAY;AAC3B;AACA,yBAAyB,uBAAuB;AAChD,IAAI,cAAc,kBAAkB;AACpC,IAAI,4BAA4B;AAChC;AACA;AACA;AACA;AACA;AACA,4CAA4C,wBAAwB;AACpE,IAAI,aAAa;AACjB;AACA;AACA,IAAI,uBAAuB,YAAY,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8BAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAA2B;;;;;;;;ACrK3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB;AAChC,IAAI,8BAA8B;AAClC,IAAI,yBAAyB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0BAA0B,cAAc,uBAAuB;AACvE,4CAA4C;AAC5C;AACA,IAAI,uBAAuB,QAAQ,qBAAqB;AACxD;AACA;AACA;AACA;AACA,IAAI,qBAAqB;AACzB;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA,IAAI,iBAAiB,8BAA8B,eAAe;AAClE,IAAI,WAAW;AACf,IAAI,mBAAmB,qBAAqB,uBAAuB;AACnE,gDAAgD,uBAAuB;AACvE,IAAI,WAAW,aAAa,YAAY,KAAK,oBAAoB;AACjE,IAAI,oBAAoB;AACxB,IAAI,oBAAoB;AACxB,+CAA+C,IAAI,WAAW;AAC9D,iDAAiD,mBAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA,WAAW,gDAAgD,EAAE,6CAA6C,SAAS,2BAA2B;AAC9I,WAAW,8CAA8C,MAAM,wBAAwB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,OAAO,UAAU;AAC7E,yDAAyD,OAAO,MAAM;AACtE;AACA,kBAAkB,OAAO,OAAO,IAAI,OAAO,OAAO;AAClD;AACA,0BAA0B,OAAO,IAAI,IAAI,OAAO,IAAI;AACpD,4BAA4B,OAAO,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,IAAY;AAChC;AACA;AACA;AACA,UAAU,+BAAoB;AAC9B,eAAe,oCAA8B;AAC7C,gBAAgB,8CAAgC;AAChD,mBAAmB,iDAAsC;AACzD,YAAY,iCAA2B;AACvC,eAAe,6CAAqC;AACpD,qBAAqB,0CAA2C;AAChE,mBAAmB,iDAAsC;AACzD,qBAAqB,0CAA0C;AAC/D,kBAAkB,gDAAuC;AACzD,wBAAwB,6CAAmD;AAC3E,sBAAsB,qDAA4C;AAClE,yBAAyB,8CAAwC;AACjE,oBAAoB,yCAAmC;AACvD,wBAAwB,6CAAmD;AAC3E,eAAe,oCAAoC;AACnD,kBAAkB,mBAAO,CAAC,IAAc;AACxC;AACA;AACA;AACA;AACA;AACA,2BAA2B,gDAAiD;;AAE5E,iCAAiC,sDAA4D;AAC7F,uCAAuC,4DAAkE;;AAEzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE,sEAAsE;AACtE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,YAAY;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,MAAM,SAAS;AAC3B,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,MAAM;AACN;AACA,oCAAoC,EAAE;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,KAAK;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,gBAAgB,oBAAoB;AACvD,sBAAsB,eAAe;AACrC,0BAA0B,cAAc;AACxC;AACA,YAAY,uBAAuB;AACnC,IAAI,uBAAuB,2BAA2B,eAAe;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc;AAClB;AACA,YAAY,eAAe,0BAA0B,eAAe;AACpE;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA,gCAAgC,+CAA+C;AAC/E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,2BAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,sCAAsC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW,IAAI,eAAe;AAC5C;AACA,IAAI,gBAAgB;AACpB;AACA,yBAAyB,YAAY,sBAAsB;AAC3D;AACA;AACA;AACA;AACA,IAAI,2BAA2B;AAC/B;AACA;AACA,YAAY,4BAA4B;AACxC;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+BAA+B;AACxE,UAAU;AACV;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,4BAA4B;AAChC,IAAI,eAAe;AACnB;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8BAA8B;AACxD;AACA;AACA;AACA;AACA,uCAAuC,gCAAgC;AACvE;AACA;AACA;AACA,IAAI,yBAAyB;AAC7B,IAAI,2BAA2B;AAC/B,IAAI,gCAAgC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe;AACvB;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D,IAAI,+BAA+B;AACnC,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA,mDAAmD,oDAAoD;AACvG;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW,OAAO;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gBAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB,WAAW;AAC9D;AACA,UAAU;AACV;AACA,+BAA+B,2CAA2C;AAC1E;AACA,MAAM;AACN,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB,WAAW;AAC9D;AACA,UAAU;AACV;AACA,+BAA+B,2CAA2C;AAC1E;AACA,MAAM;AACN,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mCAAmC;AAC7D;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI,qBAAqB,eAAe,UAAU;AAClD,YAAY,YAAY,IAAI,WAAW,SAAS,SAAS;AACzD;AACA;AACA;AACA,UAAU,UAAU,IAAI,WAAW,uBAAuB,WAAW;AACrE,uCAAuC,gBAAgB;AACvD,IAAI,qBAAqB,SAAS,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU,IAAI,WAAW,uBAAuB;AAC/D,wDAAwD;AACxD,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB,oEAAoE;AACpE;AACA,mBAAmB,SAAS;AAC5B;AACA,UAAU,SAAS,IAAI,cAAc,uBAAuB,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS,2BAA2B,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;;;;;;AC/rD1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,+BAAyB;AACnC,UAAU,+BAAyB;AACnC,aAAa,kCAA4B;AACzC,cAAc,mCAA6B;AAC3C,UAAU,+BAAoB;AAC9B,oBAAoB,yCAAmC;AACvD,mBAAmB,iDAAsC;AACzD,gBAAgB,8CAAgC;AAChD,sBAAsB,qDAA4C;AAClE,WAAW,gCAAwB;AACnC,gBAAgB,qCAA+B;AAC/C,kBAAkB,uCAAiC;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB,+CAA+C,aAAa;AAC5D;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,YAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,MAAM,KAAK,OAAO,KAAK;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sDAAsD,IAAI;AACjE;AACA,wDAAwD,QAAQ,EAAE;AAClE,+BAA+B,iCAAiC;AAChE,IAAI,eAAe,KAAK,eAAe;AACvC;AACA,QAAQ,eAAe;AACvB;AACA;AACA;AACA,OAAO,iDAAiD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA,OAAO,kBAAkB,e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AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,kBAAkB,SAAS,IAAI,cAAc;AAC7C;AACA;AACA,UAAU,6BAA6B,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,UAAU,2BAA2B;AACrC;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;;;;;;;;AC9iBtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,aAAa,wBAAwB,aAAa;AACrE;AACA,0BAA0B,UAAU,GAAG,SAAS,OAAO,iBAAiB;AACxE,KAAK,uBAAuB;AAC5B;;AAEA,UAAU,+BAAyB;AACnC,WAAW,gCAA0B;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,aAAa,kCAAkC,YAAY;AACnE;AACA,QAAQ,WAAW,kCAAkC,aAAa;AAClE;AACA,QAAQ,WAAW;AACnB;AACA,cAAc,aAAa,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;AACA;;AAEA;AACA;;AAEA,eAAe,sBAAsB;AACrC,2BAA2B,OAAO,KAAK,EAAE;AACzC;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,8CAA8C;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,UAAU,0BAA0B;AACpC;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,UAAuB;AACvB,UAA2B;AAC3B,UAAiB;;;;;;;;ACnZjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,iCAA2B;AACvC,eAAe,oCAAoC;AACnD,kBAAkB,gDAAuC;AACzD,gBAAgB,+CAAsC;AACtD,0BAA0B,yDAAgD;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,UAAU,oBAAoB;AACxD;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,sBAAsB,sCAAsC;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB,sBAAsB;AACtB,qBAAqB;AACrB,wBAAwB;AACxB,sBAAsB;AACtB,wBAAwB;AACxB,yBAAyB;AACzB,uBAAuB;AACvB,0BAA0B;AAC1B,2BAA2B;AAC3B,qCAAqC;AACrC,mCAAmC;;;;;;;AC3TnC;AACA;AACA;AACA;;AAEA,2CAAkC;AAClC,mEAAsE;AACtE,uEAA4E;AAC5E,yEAA+E;AAC/E,iEAAmE;;;;;;;;ACTnE;AACA;AACA;AACA;AACA;;AAEA,UAAU,+BAAuB;AACjC,eAAe,6CAA8B;AAC7C,yBAAyB,8CAA6C;AACtE,mBAAmB,iDAA6C;AAChE,oBAAoB,yCAAwC;AAC5D,yBAAyB,8CAA6C;;;;AAItE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C,MAAM,WAAW;AACjB;AACA;AACA,KAAK,YAAY,0CAA0C;AAC3D,KAAK,YAAY,iCAAiC,wBAAwB;AAC1E,KAAK,yBAAyB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B,WAAW,qBAAqB,IAAI,YAAY;AAChD,IAAI,YAAY,WAAW,aAAa;AACxC,IAAI,gBAAgB,wBAAwB,uBAAuB;AACnE;AACA,YAAY,uBAAuB;AACnC;AACA;AACA,yBAAyB,YAAY,6BAA6B;AAClE,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;;;;;;;ACxJX;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB;AACrB,0BAA0B;;;;;;;;;AC7E1B;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iDAA6C;AAChE,YAAY,mBAAO,CAAC,IAAY;AAChC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,qBAAqB;AAC1B,KAAK,kBAAkB,SAAS,eAAe;AAC/C;AACA;AACA;AACA,oBAAoB,+BAA+B,MAAM;AACzD,kBAAkB,cAAc;AAChC,KAAK,4BAA4B;AACjC;AACA;AACA;AACA;AACA,KAAK,mCAAmC;AACxC;AACA;AACA;AACA;AACA,KAAK,6BAA6B,IAAI,aAAa;AACnD;AACA,2CAA2C,oBAAoB;AAC/D,KAAK,8BAA8B;AACnC;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,iCAAiC;AACjC,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,uCAAuC;AAC3C;AACA,IAAI,qBAAqB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAgB;AAChB,sBAAsB;;;;;;;;ACjJtB;AACA;AACA;AACA;;AAEA,2CAAkC;AAClC,+DAAgE;AAChE,yEAA0E;AAC1E,iEAA6D;;;;;;;;ACR7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,0BAA0B;AACrD;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,kCAA4B;AACzC,oBAAoB,yCAAwC;AAC5D,eAAe,oCAAoC;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB,cAAc,WAAW;AACjE,mDAAmD,cAAc;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0BAA0B;AAC3C;AACA;AACA,UAAU,mCAAmC;AAC7C;;AAEA,+BAA+B;;;;;;;AC9G/B;AACA;AACA;AACA;AACA;;AAEA,gDAAgD,yBAAyB;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,2BAA2B;AAC9D;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,2CAA2C,mBAAmB;AAC9D,cAAc,WAAW,GAAG,yBAAyB,OAAO,WAAW;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,mEAAmE;AACxG;;AAEA;AACA,qCAAqC,uFAAuF;AAC5H;;AAEA;AACA,kCAAkC,kGAAkG;AACpI;;AAEA;AACA,kCAAkC,0FAA0F;AAC5H;;AAEA,qBAAqB;AACrB,SAA4B;AAC5B,SAA0B;;;;;;;;;ACrF1B;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,iCAA2B;AACvC,aAAa,mBAAO,CAAC,IAAU;AAC/B;AACA;AACA;AACA;AACA,eAAe,oCAAqC;AACpD,eAAe,oCAAoC;AACnD,kBAAkB,gDAAuC;;AAEzD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;AAIA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,2BAA2B;AAC1E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA,+CAA+C,0BAA0B;AACzE;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA,gDAAgD;AAChD,mEAAmE;AACnE;AACA;AACA;AACA,QAAQ,2BAA2B;AACnC,IAAI,kCAAkC;AACtC,QAAQ,6BAA6B;AACrC,IAAI,4BAA4B;AAChC,QAAQ,+BAA+B;AACvC,IAAI,8BAA8B;AAClC,+BAA+B,oCAAoC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,gCAAgC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,2CAA2C,cAAc;AACzD;AACA;AACA;AACA;AACA,oCAAoC,aAAa,GAAG,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,qBAAqB;AAC3C,IAAI,2BAA2B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,qBAAqB;AAC3C,IAAI,6BAA6B;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,qBAAqB;AAC3C,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA,IAAI,kBAAkB;AACtB;AACA,kCAAkC,6BAA6B;AAC/D;AACA;AACA;AACA;AACA,6CAA6C,6BAA6B;AAC1E;AACA,IAAI,mCAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA,kCAAkC,8BAA8B;AAChE;AACA;AACA;AACA;AACA,6CAA6C,6BAA6B;AAC1E;AACA,IAAI,mCAAmC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,6BAA6B;AACjC;AACA;AACA;AACA,OAAO,aAAa,oCAAoC,aAAa;AACrE,sCAAsC,aAAa;AACnD;AACA,QAAQ,aAAa;AACrB;AACA,gDAAgD;AAChD,yBAAyB;AACzB;AACA;AACA;AACA,4BAA4B,YAAY;AACxC,uBAAuB,aAAa;AACpC,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA,gDAAgD;AAChD,0BAA0B;AAC1B;AACA;AACA;AACA,0BAA0B,aAAa,wBAAwB,UAAU;AACzE,+CAA+C,WAAW;AAC1D;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA,SAAS,iCAAiC;AAC1C;AACA;AACA;AACA,yBAAyB,WAAW,wBAAwB,QAAQ,GAAG;AACvE,SAAS,sBAAsB,4BAA4B,eAAe;AAC1E,gDAAgD,WAAW;AAC3D,YAAY,WAAW,qCAAqC,UAAU;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,8BAA8B,uBAAuB;AACrD;AACA,mBAAmB,WAAW,GAAG,kBAAkB;AACnD;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,2BAA2B,aAAa;AACxC,IAAI,WAAW;AACf;AACA;AACA;AACA,YAAY,YAAY;AACxB,yDAAyD;AACzD;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,8BAA8B,uBAAuB;AACrD;AACA;AACA,IAAI,kBAAkB;AACtB;AACA;AACA;AACA,IAAI,6BAA6B;AACjC,IAAI,uBAAuB;AAC3B,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,sCAAsC;AACtC;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,0BAA0B;AACrD;AACA,IAAI,iCAAiC;AACrC,IAAI,oCAAoC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;AACA;AACA,IAAI,yDAAyD;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,QAAQ;AACjD,SAAS,kCAAkC;AAC3C,+BAA+B,6BAA6B;AAC5D,aAAa,2BAA2B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB,SAA4B;;;;;;;;ACnvB5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,+CAAkD;;AAE5E;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,aAAa;AACjC,iEAAiE;AACjE;AACA;AACA;AACA,sBAAsB,4BAA4B;AAClD,QAAQ,iCAAiC;AACzC,QAAQ,qBAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,oDAAoD;AACtF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAwD;AAC1F;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,0FAA0F;AAC5H;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN,mCAAmC,kBAAkB;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4BAA4B;AAC5B,4BAA4B;AAC5B,iCAAiC;AACjC,8BAA8B;AAC9B,gCAAgC;AAChC,kCAAkC;;;;;;;;ACxKlC;AACA;AACA;AACA;;AAEA,6EAAuE;AACvE,6EAAuE;AACvE,uFAAiF;AACjF,iFAA2E;AAC3E,qFAA+E;AAC/E,mFAA8F;AAC9F,uEAAwE;AACxE,+DAAgE;;;;;;;;ACZhE;AACA;AACA;AACA;AACA,uCAAoC;AACpC,+CAAwD;AACxD,uCAAoC;AACpC,iDAA4D;AAC5D,wCAAsC;AACtC,yCAAwC;AACxC,+CAAwC;AACxC,2DAA0D;AAC1D,2DAAoD;AACpD,2DAA0D;AAC1D,wDAAuD;AACvD,uEAA4E;AAC5E,+CAAwC;AACxC,iDAA2C;AAC3C,SAAS,mBAAO,CAAC,IAAqB;AACtC,8BAA8B;AAC9B,uEAA4E;AAC5E,qDAAoD;AACpD,yCAAkC;;;;;;;;ACtBlC;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,IAAI;AACJ;AACA;AACA,EAAE;AACF;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,MAAM,OAAO,sBAAsB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,IAAI;AACJ;AACA;AACA,EAAE;AACF;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,YAAY,iCAA2B;AACvC,eAAe,oCAAoC;AACnD;AACA,YAAY,mBAAO,CAAC,IAAa;;;AAGjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yCAAyC;AAC7C,IAAI,kBAAkB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gBAAgB;AAChB,iBAAiB;AACjB,oBAAoB;AACpB,qBAAqB;AACrB,wBAAwB;AACxB,yBAAyB;AACzB,wBAAwB;AACxB,uBAAuB;AACvB,wBAAwB;;;;;;;;ACrOxB;AACA;AACA;AACA;;AAEA,YAAY,mBAAO,CAAC,IAAY;AAChC,YAAY,iCAA2B;AACvC,eAAe,oCAA0B;AACzC,gBAAgB,qCAA2B;AAC3C,mBAAmB,wCAA8B;AACjD,wBAAwB,6CAAmD;AAC3E,kBAAkB,gDAAuC;AACzD,yBAAyB,8CAA0C;;;AAGnE;AACA;AACA;;AAEA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,IAAI;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;;;AAGA,aAAa;;;;;;;AC3Ib;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,IAAQ;AAC3B,+CAAwC;AACxC,gBAAgB;AAChB,yBAAyB;AACzB,wBAAwB;AACxB,uBAAuB;;;;;;;;;ACVX;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA,iBAAiB,mBAAO,CAAC,IAAY;AACrC,cAAc,mBAAO,CAAC,IAAgB;;AAEtC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,IAAI;AAC7B,wBAAwB,EAAE,WAAW,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,cAAc,OAAO;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACxOA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,wBAAwB;AACxB,wBAAwB;AACxB,0BAA0B;AAC1B,0BAA0B;AAC1B;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,sBAAsB;AACjC,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,GAAG;AACvB;;AAEA;AACA,aAAa,QAAQ;AACrB,cAAc,wBAAwB;AACtC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,cAAc;AAC5B;;AAEA,eAAe,uCAAuC;AACtD,eAAe,8BAA8B;AAC7C;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;;AAEA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc,sBAAsB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;AACA,qBAAqB,iBAAiB,EAAE,UAAU;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,mCAAmC,UAAU;AAC7C;AACA;;AAEA,eAAe,wDAAwD,UAAU;AACjF,eAAe,0DAA0D;AACzE;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA,eAAe;;AAEf,cAAc,MAAM;AACpB;AACA;AACA;;AAEA,cAAc,QAAQ;AACtB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,qCAAqC;AACrD,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,UAAU;AACvB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB;AACA;AACA,uBAAuB;;AAEvB;AACA;;AAEA;AACA,aAAa,WAAW,iBAAiB;AACzC,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,sDAAsD;AACtD;;AAEA;AACA,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB,GAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,8FAA8F;AAC9F,yCAAyC;AACzC,+EAA+E,sDAAsD;;AAErI;AACA,WAAW,iBAAiB,4BAA4B;AACxD;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,WAAW,iBAAiB;AAC5B,WAAW,WAAW;AACtB,aAAa;AACb;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B,iCAAiC,+BAA+B;AAChE,iBAAiB,cAAc;AAC/B,+BAA+B;AAC/B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,yDAAyD;AACpE,WAAW,SAAS;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,YAAY,wBAAwB;AACpC,aAAa;AACb;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;;AAEA,2DAA2D,2BAA2B;;AAEtF;AACA,uCAAuC,aAAa;AACpD;AACA;AACA,iCAAiC,iBAAiB;AAClD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,qBAAqB;AAClC,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iBAAiB;AAC3E;;AAEA;AACA;AACA,KAAK;AACL,wCAAwC,4CAA4C;;AAEpF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qEAAqE;;AAErE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA,wCAAwC,cAAc;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,sBAAsB;AACtB,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;;AAEA;;AAEA,WAAW,YAAY;AACvB;AACA,+BAA+B,kBAAkB;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc,gBAAgB;AAC9B,cAAc,QAAQ;AACtB,cAAc,MAAM;AACpB;;AAEA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB;AACA;AACA,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB;AACA;AACA,uBAAuB,QAAQ;AAC/B;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA,0BAA0B,QAAQ,GAAG,QAAQ;;AAE7C,kCAAkC,QAAQ,IAAI,QAAQ;AACtD,sBAAsB,QAAQ,GAAG,QAAQ;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB,aAAa;AACb;AACA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,cAAc;AAC3B;;AAEA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,aAAa,UAAU;AACvB,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA,aAAa,QAAQ;AACrB,aAAa,2BAA2B;AACxC,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B;AACA,eAAe,iBAAiB;AAChC,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,cAAc;AAC9B,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,wBAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,aAAa,eAAe;AAC5B,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;AAClE,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,cAAc;AAC1D;AACA;;AAEA;AACA,eAAe,eAAe;AAC9B,eAAe,kBAAkB;AACjC,eAAe,QAAQ;AACvB,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,sBAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,iDAAiD;AACjE;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,eAAe;AAC9B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C;AAC1C;AACA;;AAEA,2CAA2C,SAAS;AACpD;AACA,eAAe,cAAc;AAC7B;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,YAAY,QAAQ;AACpB,YAAY,eAAe;AAC3B,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,eAAe,qBAAqB;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,YAAY,QAAQ;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,YAAY;AACzB;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA,KAAK;AACL,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,YAAY;AACzB;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ,iCAAiC;;AAEzC;AACA;AACA,gDAAgD,gCAAgC;;AAEhF;AACA,qCAAqC,2BAA2B;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,wCAAwC,uCAAuC;AAC/E;AACA,wBAAwB,iBAAiB,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,cAAc;AACpD;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,UAAU;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,YAAY,QAAQ;AACpB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;;AAEhB,mCAAmC,qDAAqD;AACxF;AACA;;AAEA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B,cAAc,uBAAuB;AACrC;AACA,wCAAwC,cAAc;AACtD;AACA;AACA;AACA,iCAAiC,8CAA8C;AAC/E;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,KAAK;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,UAAU,QAAQ;AAClB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,gCAAgC;AAChC,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;;;;;;;;ACp9EA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;;AAEA;AACA,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC;AAChC;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAA6C;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,GAAG;AACH;AACA;AACA,qCAAqC;AACrC;AACA,8CAA8C,oBAAoB;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;;AAEA;AACA,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,kBAAkB;AAC7B,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,WAAW,uBAAuB;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kBAAkB;AAC/B,cAAc,eAAe;AAC7B;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,cAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,eAAe,eAAe,KAAK,KAAK,WAAW,KAAK;AAChE,qBAAqB,cAAc,OAAO;AAC1C,QAAQ,cAAc,eAAe,QAAQ,KAAK,cAAc,KAAK,OAAO;;AAE5E;AACA,QAAQ,qCAAqC;;AAE7C;AACA,QAAQ,mDAAmD;AAC3D,QAAQ,uCAAuC;AAC/C,QAAQ,uCAAuC;;AAE/C;AACA;AACA,QAAQ,0BAA0B;AAClC;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,uBAAuB;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,gBAAgB;AAChB,cAAc;AACd;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA,gBAAgB,0CAA0C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,YAAY,2BAA2B;AACvC,YAAY;AACZ;AACA;AACA,OAAO;AACP,QAAQ;AACR;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,0BAA0B;AACtC;AACA;AACA,OAAO;AACP;AACA;AACA,iBAAiB;AACjB;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gBAAgB;AAChB;AACA;AACA,0CAA0C,mBAAmB;AAC7D,YAAY,eAAe;AAC3B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3lBA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uCAAuC;AAC/C,QAAQ,yCAAyC;AACjD,QAAQ,4CAA4C;AACpD;AACA;;AAEA;AACA;AACA;AACA,QAAQ,UAAU,EAAE,WAAW,EAAE,GAAG;AACpC,QAAQ,WAAW,WAAW,IAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,QAAQ,sBAAsB;AAC9B,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,sBAAsB;AAC9B,QAAQ,sBAAsB;AAC9B,QAAQ,eAAe;AACvB;AACA,GAAG;;AAEH,uBAAuB,EAAE,cAAc,IAAI;AAC3C,mDAAmD,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA,KAAK;AACL,MAAM;AACN;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,kBAAkB;AAClB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACO;AACP;AACA;AACO;AACP,mBAAmB,UAAU,SAAS,QAAQ;AAC9C;AACO;AACP;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4BAA4B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,YAAY,GAAG,IAAI;AAChD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,aAAa;AACpG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,+CAA+C,YAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,8CAA8C;AACzD;AACA;AACA,mBAAmB,SAAS,EAAE,QAAQ;AACtC;AACA,CAAC;AACM;AACP;AACA;AACA,KAAK;AACL;AACO;AACP;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,8CAA8C;AACrD;AACA;AACA,aAAa;AACb;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,0CAA0C;AACjD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,4CAA4C,gBAAgB,KAAK;AACjE;AACO;AACP;AACA;AACA;AACA,iCAAiC,MAAM;AACvC,kCAAkC,OAAO;AACzC,uCAAuC,OAAO,EAAE,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvKuC;AACvC;AACA;AACA,cAAc,eAAe,YAAY,4BAA4B,EAAE;AACvE;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA,kBAAkB,KAAK,IAAI,MAAM,EAAE,+BAA+B;AAClE,KAAK;AACL;AACA;AACA;AACA,yBAAyB,UAAU,GAAG,OAAO;AAC7C;AACA;AACA;AACA,sCAAsC,UAAU,EAAE,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B;AACA,kCAAkC,sBAAsB,EAAE,UAAU;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;;AC1CsC;AACQ;AACQ;AACR;AAC9C;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA,wBAAwB,WAAW;AACnC,0BAA0B,iBAAiB;AAC3C,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,OAAO;AACjB,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGoC;AACE;AACgC;AACtE;AACA;AACA,mEAAmE;AACnE;AACA;AACA,2CAA2C;AAC3C,uCAAuC,QAAQ;AAC/C;AACO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,SAAS;AAC1C;AACO,eAAe,qBAAK;AAC3B;AACA,sCAAsC,UAAU;AAChD,4BAA4B,WAAW;AACvC;AACA;AACA;AACA,sBAAsB,WAAW;AACjC;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA,0DAA0D,QAAQ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,KAAK;AACxC;AACA;AACA,SAAS;AACT;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,iEAAiE,qBAAK;AACtE;AACA;;ACjEmD;AAClB;AACwB;AACnB;AACtC;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB,MAAM,WAAW;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CO;AACP,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;ACnBiC;AACU;AACqB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc,mCAAmC,QAAQ;AACxE,kDAAkD,OAAO;AACzD;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,YAAY,OAAO;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA,aAAa,aAAa,MAAM,gBAAgB,aAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA,qBAAqB;AACrB;AACA;AACA,wEAAwE,WAAW;AACnF;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0BAA0B,WAAW;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AA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AEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChDA,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,SAAS,mBAAO,CAAC,IAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,SAAS,mBAAO,CAAC,IAAM;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3BA,SAAS,mBAAO,CAAC,IAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpBA,qBAAqB,mBAAO,CAAC,IAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;;;;;;;;ACxBA,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;AC7BA,oBAAoB,mBAAO,CAAC,IAAkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;;AAEA;;;;;;;;ACfA,aAAa,mBAAO,CAAC,IAAW;AAChC,gBAAgB,mBAAO,CAAC,IAAc;AACtC,qBAAqB,mBAAO,CAAC,IAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,IAAc;AACvC,eAAe,mBAAO,CAAC,IAAa;AACpC,eAAe,mBAAO,CAAC,IAAY;AACnC,eAAe,mBAAO,CAAC,GAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,eAAe,mBAAO,CAAC,IAAY;AACnC,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3DA,eAAe,mBAAO,CAAC,IAAY;AACnC,kBAAkB,mBAAO,CAAC,IAAgB;AAC1C,mBAAmB,mBAAO,CAAC,IAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChCA,YAAY,mBAAO,CAAC,IAAU;AAC9B,uBAAuB,mBAAO,CAAC,IAAqB;AACpD,cAAc,mBAAO,CAAC,IAAY;AAClC,oBAAoB,mBAAO,CAAC,IAAkB;AAC9C,eAAe,mBAAO,CAAC,IAAY;AACnC,aAAa,mBAAO,CAAC,IAAU;AAC/B,cAAc,mBAAO,CAAC,IAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;ACzCA,uBAAuB,mBAAO,CAAC,IAAqB;AACpD,kBAAkB,mBAAO,CAAC,IAAgB;AAC1C,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,gBAAgB,mBAAO,CAAC,GAAc;AACtC,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,kBAAkB,mBAAO,CAAC,IAAe;AACzC,cAAc,mBAAO,CAAC,IAAW;AACjC,wBAAwB,mBAAO,CAAC,IAAqB;AACrD,eAAe,mBAAO,CAAC,IAAY;AACnC,iBAAiB,mBAAO,CAAC,IAAc;AACvC,eAAe,mBAAO,CAAC,IAAY;AACnC,oBAAoB,mBAAO,CAAC,IAAiB;AAC7C,mBAAmB,mBAAO,CAAC,IAAgB;AAC3C,cAAc,mBAAO,CAAC,IAAY;AAClC,oBAAoB,mBAAO,CAAC,IAAiB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC7FA,eAAe,mBAAO,CAAC,IAAY;AACnC,eAAe,mBAAO,CAAC,IAAa;AACpC,kBAAkB,mBAAO,CAAC,EAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;;;;;;;;AChBA,eAAe,mBAAO,CAAC,IAAY;AACnC,qBAAqB,mBAAO,CAAC,IAAmB;AAChD,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,IAAoB;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AClBA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACbA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB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AAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,IAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,IAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,IAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,IAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,IAAS;AAC5B,gBAAgB,mBAAO,CAAC,IAAc;AACtC,UAAU,mBAAO,CAAC,IAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,GAAc;;AAEtC;AACA;;AAEA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,CAAC;;AAED;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACdA,YAAY,mBAAO,CAAC,IAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,IAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACRA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,eAAe,mBAAO,CAAC,IAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;;AAEA;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,IAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,GAAG;AAChB;AACA;AACA;AACA;;AAEA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,IAAc;AACtC,UAAU,mBAAO,CAAC,IAAQ;AAC1B,eAAe,mBAAO,CAAC,IAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACjCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;;;;;;;ACzBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,UAAU;AACvB;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA,YAAY,QAAQ,IAAI,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,IAAY;AACnC,UAAU,mBAAO,CAAC,IAAO;AACzB,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ,WAAW;AAC9B,WAAW,SAAS;AACpB;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,GAAG;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,IAAoB;AAClD,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,+CAA+C,mBAAmB;AAClE;AACA;AACA;;AAEA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,IAAc;AACvC,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AChCA,kBAAkB,mBAAO,CAAC,IAAe;AACzC,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,IAAS;AAC5B,gBAAgB,mBAAO,CAAC,IAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,mBAAmB,mBAAO,CAAC,IAAiB;AAC5C,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC7DA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,mBAAmB,mBAAO,CAAC,IAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,IAAqB;AACpD,gBAAgB,mBAAO,CAAC,IAAc;AACtC,eAAe,mBAAO,CAAC,IAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,IAAkB;AAC9C,iBAAiB,mBAAO,CAAC,GAAe;AACxC,kBAAkB,mBAAO,CAAC,IAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,IAAc;AACtC,qBAAqB,mBAAO,CAAC,IAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,WAAW;AACtB,WAAW,UAAU;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,iBAAiB;AACjB;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;ACtCA,WAAW,mBAAO,CAAC,IAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,IAAa;AACpC,eAAe,mBAAO,CAAC,IAAY;AACnC,eAAe,mBAAO,CAAC,IAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC/DA,iBAAiB,mBAAO,CAAC,IAAe;AACxC,aAAa,mBAAO,CAAC,IAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA,cAAc,QAAQ;AACtB,WAAW;AACX;AACA;AACA;AACA;;AAEA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACqG;AACvG,CAAC,sBAAsB;;AAEvB;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,SAAS;;AAEpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,gDAAgD;AAChD;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,sBAAsB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN,qBAAqB;;AAErB;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,WAAW,OAAO;AAClB;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA,0DAA0D,gCAAgC;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;;;AAGA;AACA,2DAA2D;AAC3D;;AAEA;AACA;AACA,wEAAwE,gBAAgB,iCAAiC,IAAI;AAC7H,YAAY;;;AAGZ;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,4CAA4C,EAAE,GAAG,GAAG;;AAE9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;;AAEA;AACA;AACA,iCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA,wCAAwC;AACxC;;AAEA,6EAA6E;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,YAAY;;AAEZ;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB,IAAI,GAAG,GAAG,gBAAgB,GAAG,iCAAiC,IAAI;AAClF,YAAY,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG;AACrD,iBAAiB,IAAI,GAAG,IAAI;AAC5B,qBAAqB,IAAI;AACzB,eAAe,IAAI,6BAA6B,GAAG,UAAU,IAAI;AACjE,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA;AACA,4BAA4B,IAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI;AACpC;AACA;AACA;AACA,0GAA0G,GAAG,SAAS,GAAG,WAAW,GAAG;AACvI;AACA;AACA;AACA,+FAA+F,IAAI,EAAE,KAAK;AAC1G,4BAA4B,IAAI,yBAAyB,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AAC/H;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA,SAAS,IAAI;AACb;;AAEA,GAAG;AACH,kGAAkG,IAAI,EAAE,KAAK,4BAA4B,IAAI,uBAAuB,EAAE,8BAA8B,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AAC1Q;AACA;AACA,8FAA8F,IAAI,EAAE,KAAK,4BAA4B,IAAI,uBAAuB,EAAE,8BAA8B,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AACtQ;AACA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B,iFAAiF,GAAG;AACpF,gEAAgE,GAAG;AACnE;AACA,kBAAkB,IAAI;AACtB;AACA;AACA,iGAAiG,KAAK,wEAAwE,IAAI;AAClL,GAAG;AACH;AACA;AACA;;AAEA;AACA,oCAAoC,eAAe,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA,aAAa,GAAG;AAChB;AACA,6BAA6B,GAAG,8CAA8C,GAAG;AACjF;AACA,KAAK;AACL;;AAEA,8CAA8C,cAAc,EAAE;AAC9D,+GAA+G;;AAE/G;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe,EAAE;AAC9D,6CAA6C,KAAK;AAClD,+CAA+C,EAAE,kCAAkC,KAAK,6CAA6C,KAAK;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,oCAAoC,UAAU;AAC1E;AACA,iCAAiC,GAAG,iCAAiC,GAAG,6EAA6E,GAAG,+BAA+B,GAAG,gCAAgC,GAAG;AAC7N,GAAG;AACH;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B,oCAAoC,GAAG;AACvC,0DAA0D,GAAG,iBAAiB,IAAI;AAClF,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,OAAO;AACvB;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,UAAU;;;AAGV;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA,sBAAsB,OAAO;AAC7B;AACA;;AAEA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;AACV;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;;AAEA,0BAA0B,QAAQ;AAClC;AACA;AACA,gBAAgB;;;AAGhB;;AAEA,0BAA0B,QAAQ;AAClC;AACA;;AAEA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,QAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA,UAAU;AACV;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6DAA6D,WAAW,EAAE;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;;AAEA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA,0BAA0B,QAAQ;AAClC;AACA;AACA;;AAEA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,uBAAuB;AACvB;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,4BAA4B;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wEAAwE,aAAa;AACrF;AACA;;AAEA,sCAAsC;AACtC;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uFAAuF,eAAe;AACtG;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA,+CAA+C;;AAE/C;AACA,qFAAqF,eAAe;AACpG;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA,qFAAqF,eAAe;AACpG;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT,QAAQ;;;AAGR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gGAAgG,8BAA8B;AAC9H;AACA;AACA;;AAEA,+FAA+F,8BAA8B;AAC7H;;AAEA,kFAAkF,8BAA8B;AAChH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA,yEAAyE,4BAA4B;AACrG;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,4BAA4B;AAC9C;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;ACz6FD;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;;;;ACAY;AACZ;AACA,QAAQ,2BAA2B,WAAW;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AC5GA;AACA;AACA,mBAAO,CAAC,IAAsB;;AAE9B;AACA;AACA,mBAAO,CAAC,IAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,GAAG;AACxB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA,8DAA8D,KAAK,GAAG,MAAM;AAC5E,iBAAiB;AACjB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC/DA;AACA;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;AACA;AACA,mBAAO,CAAC,IAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,YAAY,UAAU;AACtB;;;AAGA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;;;;;;;ACvBA;AACA;AACA,mBAAO,CAAC,IAAc;;AAEtB;AACA;AACA,mBAAO,CAAC,IAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,YAAY,UAAU;AACtB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;;;;;;;ACtCA;AACA;AACA,mBAAO,CAAC,IAAc;;AAEtB;AACA;AACA,mBAAO,CAAC,IAAc;;AAEtB;AACA;AACA,mBAAO,CAAC,IAAqB;AAC7B;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB,YAAY,UAAU;AACtB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;;;;;;;AC3DA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,SAAS;AACrB;AACA;AACA,sBAAsB;AACtB,wBAAwB;AACxB,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;;;;;;;ACdA;AACA;AACA,mBAAO,CAAC,IAAc;;AAEtB;AACA;AACA,mBAAO,CAAC,GAAe;;AAEvB;AACA;AACA,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,SAAS,yEAAyE;AAC9F;AACA;AACA,0BAA0B;AAC1B,4BAA4B;AAC5B,uBAAuB,GAAG;AAC1B,sBAAsB,WAAW,GAAG;AACpC,sBAAsB,iCAAiC,GAAG;AAC1D,sBAAsB,uBAAuB;AAC7C;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;;;;;AC7DA;AACA;AACA;;AAEA;;;;;;;ACJA;AACA;AACA;;AAEA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACNA;AACA;AACA,mBAAO,CAAC,IAAmB;;AAE3B;AACA;AACA,mBAAO,CAAC,IAAa;;AAErB;AACA;AACA,mBAAO,CAAC,IAAY;;AAEpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;;;;;;AC1BA;AACA;AACA,mBAAO,CAAC,IAAsB;;AAE9B;AACA;AACA,mBAAO,CAAC,IAAqB;;AAE7B;AACA;AACA,mBAAO,CAAC,GAAa;;AAErB;AACA;AACA,mBAAO,CAAC,IAAW;AACnB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;ACjDA;AACA;AACA,mBAAO,CAAC,IAAuB;;AAE/B;AACA;AACA,mBAAO,CAAC,IAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA,WAAW,GAAG;AACd,WAAW,OAAO;AAClB,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;;;;;;AC3DA;AACA;AACA,mBAAO,CAAC,IAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA,gDAAgD;AAChD,gDAAgD;AAChD;AACA;AACA,iDAAiD;AACjD;;;AAGA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;ACnCA;AACA;AACA,mBAAO,CAAC,IAA+B;;AAEvC;AACA;AACA,mBAAO,CAAC,IAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD,oDAAoD;AACpD;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;ACzCA;AACA;AACA,mBAAO,CAAC,IAA+B;;AAEvC;AACA;AACA,mBAAO,CAAC,IAAuB;;AAE/B;AACA;AACA,mBAAO,CAAC,IAAY;AACpB;AACA;AACA;AACA;AACA;A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nBC,4BAA4B,CAC7B;AAAC;;;;;;;;;;;;;;ACLF;AAAA;;;;;;;;;eAEA;EACA9Q;EACAgR;EACAC;IACAC;MAAA;MACA;IACA;EACA;EACAC;IACAC;EACA;AACA;AAAA;;;;;;;;;;;;;;AChBA;AACA;AAGA;AACA;AACA;AACA;AAAA;;;;;;;AAJA;;AAMA;AACAC;AACAA;AACAA;AACAA;;AAEA;AACA;EACAC;IACA;IACA;IACA;IACA;MACA;AACA;AACA;AACA;AACA;AACA;IACA;IACA;EACA;AACA;AAEAC;EACAC;IACA;MACA;IACA;IACA;IACA;EACA;AACA;AAEAD;EAAAE;AAAA;AAAA,eAEA;EACAzR;EACAgR;EACAC;IACAS;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA,mBAAmB,SAA4B;AAC/C,kBAAkB,MAA8B;AAAhD,eACA;EACA1R;EACA2R;IACA;MACAC;MACAC;IACA;EACA;EACAZ;IACA7T;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAEA;EACA4C;EACAiR;IACA;IACA;IACAhC;MAAA;MACA;QACA7K;MACA;MACA;IACA;EACA;EACA0N;IACA;IACAC;MACA;MAEA;QAAA;QACA;UACA;UAAA;QACA;MACA;QACA3N;MACA;IACA;IACA4N;MACA;QACAC;QACA7P;UAAA;UACA;QACA;MACA;IACA;IACA8P;MACA;QACAD;QACA7P;UAAA;UACA;QACA;MACA;IACA;IACA+P;MACA;QACAF;QACA7P;UAAA;UACA;QACA;MACA;IACA;IACAgQ;MACA;MACA;QACAH;QACA7P;UAAA;UACA;QACA;MACA;IACA;IACAiQ;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;MACA;MACA;MACA;QACA;QACAC;QACA;QACAA;QACA1H;MACA;MACA0H;IACA;IACAC;MACA;MACA;MACA;QACAC,mFACAC,kCACAA;UACA;UACAxO;QACA;QACA;MACA;MACA;QACA;QACAuO,cACAC,kCACAA;QACA;MACA;MACAxO;MACA;MACA;MACA;MACA;QACA;QACAyO;QACA;QACAA;QACAA;QACA9H;MACA;MACA8H;IACA;EACA;EACA1B;IACA2B;IACAC;IACAC;IACAC;IACAC;IACAC;EACA;AACA;AAAA;;;;;;;;;;;;;;;;;;eC3KA;EACAnT;EACAgR;EACAC;IACAhC;MAAA;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACJA;;;;;;;;;eAEA;EACAjP;EACAgR;EACAC;IACA;IACA;IACA9Q;MACA;MACA;MACA;IACA;IACA3B;MACA;IACA;IACA4U;MACA;IACA;IACApT;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACSA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAEA;EACAA;EACAgR;EACAqC;EACApC;IACAzS;MACA;IACA;IACA8U;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;EACA;EACA3B;IACA4B;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;EACA;EACAC;IACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;AC7DA;AAAA;;;;;;;;;;;;;;;eAEA;EACA5T;EACAgR;EACAqC;EACApC;IACAzS;MACA;IACA;IACAqV;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAN;MAAA;MACA;IACA;EACA;EACAI;IACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACzBA;AAAA;;;;;;;;;;;;;;eAEA;EACA5T;EACAgR;EACAqC;EACApC;IACAzS;MACA;IACA;IACAuV;MACA;IACA;EACA;EACAH;IACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;AClBA;AAAA;;;;;;;;;;;;;;eAEA;EACA5T;EACAgR;EACAqC;EACApC;IACAzS;MACA;IACA;IACAwV;MACA;IACA;EACA;EACAJ;IACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACOA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAEA;EACA5T;EACAgR;EACAqC;EACApC;IACAzS;MACA;IACA;IACAyV;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;EACA;EACArC;IACAsC;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;EACA;EACAT;IACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;AAEA;EACA;AACA;AAAA,eAEA;EACA5T;EACAgR;EACAC;IACA;IACAzS;MACA;IACA;IACA8V;MAAA;MACA;IACA;IACAC;MACA;QAAA;QACA;QACA;QACA;MACA;MACA;IACA;IACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;IACAnR;MAAA;MACA;IACA;IACAoR;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MACA;MACA;MACA;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;EACA;EACAhD;IACAiD;MACA;IACA;EACA;EACA5D;IACA6D;IACAC;IACAC;EACA;AACA;AAAA;;;;;;;;;;;;;;ACxEA;AAAA;;;;;;;;;;;;;AAEA;AACA;AACA;AACA;AAAA,eACA;EACAlV;EACAgR;EACAC;IACAkE;MACA;IACA;IACAC;MACA;QACA;QACA;UACA;QACA;QACA;UACA;MAAA;MAEA;IACA;IACAC;MACA;QACA;QACA;UACA;QACA;QACA;UACA;MAAA;MAEA;IACA;EACA;EACAlE;IACAmE;EACA;AACA;AAAA;;;;;;;;;;;;;;AC3CA;AACA;AAAA;;;;;;;;;eAEA;EACAtV;EACAgR;EACAW;IACA;MACAzK;MACAqO;MACAC;IACA;EACA;EACAvE;IACA;IACApF;MACA;QACA;QACA;MACA;MACA;IACA;EACA;EACAiG;IACA;IAEA2D;MACA;MACA;IACA;EACA;EACAtE;IACAuE;EACA;AACA;AAAA;;;;;;;;;;;;;;ACjCA;;;;;;;;;;eAEA;EACA1V;EACAgR;EACAW;IACA;MACAgE;IACA;EACA;EACA1E;IACA;IACA;IACA2E;MACA;QACA;MACA;QACAxR;QACA;MACA;IACA;EACA;EACA+M;IACAuE,aAAAA,yFAAAA;EACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;eCvBA;EACA1V;EACAgR;AACA;AAAA;;;;;;;;;;;;;;ACOA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;AAPA;AACA;AAAA,eAOA;EACAhR;EACAgR;EACAC;IACA;IACAzS;MACA;IACA;IACA8V;MAAA;MACA;IACA;IACAnU;MACA;IACA;IACA+G;MACA;IACA;IACAuN;MACA;IACA;IACAnR;MAAA;MACA;IACA;IACAoR;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;EACA;EACA/C;IACAiD;MACA;IACA;EACA;EACA5D;IACA6D;IACAE;EACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;eC3DA;EACAlV;EACAgR;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;eCHA;EACAhR;EACAgR;AACA;AAAA;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;eAEA;EACAhR;EACAmR;IACA0E;IACAC;EACA;EACA7E;IACA;IACA9Q;MACA;IACA;IACA4V;MACA;IACA;IACAlK;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;eAEA;EACA7L;EACAgR;EACAC;IACA+E;MACA;IACA;IACAC;MACA;MACA;QACApC;QACAP;QACAU;QACAD;QACAE;QACAiC;QACAvQ;QACA2O;QACA6B;QACAC;MACA;MACA;MACA;IACA;EACA;EACAjF;IACAkF;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;IACAC;EACA;AACA;AAAA;;;;;;;;;;;;;;AC3BA;AAEA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;EAAAza;AAAA;AAAA,eAEA;EACA2D;EACAgR;EACAC;IACA;IACAzS;MACA;IACA;IACA0X;MACA;IACA;IACA3B;MACA;MACA;MACA;IACA;IACAE;MACA;IACA;IACAnR;MACA;IACA;IACAyT;MACA;QACA;MACA;MACA;MACA;MACA;MACA;MACA;IACA;IACAjR;MACA;IACA;IACA8O;MACA;IACA;EACA;EACAoC;IACA;IACA9a;EACA;EACA+a;IACA;IACA/a;EACA;EACA4V;IACAoF;MACA;QACA;QACA;QACA;QACA;UACA;QACA;MACA;MACAC;MACA;IACA;;IACApC;MACA;IACA;EACA;EACA5D;IACA6D;IACAoC;IACAlC;EACA;AACA;AAAA;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;eAEA;EACAlV;EACAgR;EACAC;IACA;IACA;IACAtL;MAAA;MACA;IACA;IACA0R;MAAA;MACA;IACA;IACA7Y;MACA;IACA;IACA8Y;MACA;IACA;IACAP;MAAA;MACA;QACA;MACA;MACA;MACA;MACA;MACA;MACA;IACA;IACAzT;MAAA;MACA;IACA;IACAkR;MACA;MACA;MACA;MACA;QACA;MACA;MAEA;MACA;MACA;MACA;IACA;IACAC;MACA;IACA;IACAG;MAAA;MACA;IACA;IACA2C;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MAAA;MACA;IACA;IACAC;MACA;MACA;MACA;MACA;IACA;IACAnD;MACA;QACA;MACA;MAEA;MACA;IACA;IACAzO;MAAA;MACA;IACA;IACA+O;MACA;IACA;IACAC;MACA;MACA;IACA;EACA;EACAhD;IACAiD;MACA;IACA;EACA;EACA5D;IACA+D;IACAyC;IACA3C;IACAoC;EACA;AACA;AAAA;;;;;;;;;;;;;;ACtHA;AACA;AACA;AAAA;;;;;;;;;;;;AACA;EAAA/a;AAAA;AAAA,eACA;EACA2D;EACAmR;IAAApR;EAAA;EACAiR;EACAW;IACA;MACA6C;MACA7I;IACA;EACA;EACAsF;IACA;IACA;IACA/J;MACA;IACA;EACA;EACA8P;IACA9a;IACAoS;MACA;MACA;MACApS;IACA;EACA;EACA+a;IACA/a;IACAoS;MACA;MACA;MACApS;IACA;EACA;EACA4V;IACAjC;MACA;IACA;IACA+H;MACA;MACA;QACA1b;QACA;QACA;QACA;MACA;QACA;MACA;IACA;EACA;AACA;AAAA;;;;;;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;eAEA;EACA8D;EACAgR;EACAC;IACA;IACAjR;MAAA;MACA;IACA;IACA6X;MACA;IACA;IACA3Q;MACA;MACA;MACA;IACA;IACAqO;MACA;MACA;MACA;IACA;IACAuC;MACA;IACA;EACA;EACA3G;IACA4G;EACA;AACA;AAAA;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;AACA;EAAA1b;AAAA;AAAA,eAEA;EACA2D;EACAgR;EACAC;IACA;IACA+G;MACA;IACA;IACAC;MACA;IACA;IACAC;MACA;IACA;IACAnO;MACA;IACA;IACAoO;MAAA;MACA;QACA;QACA;QACA;MACA;IACA;EACA;EACArG;IACA;IACAsG;MACA;IACA;EACA;EACAnB;IACA/a;EACA;EACA8a;IACA9a;EACA;EACAiV;IACA4G;IACAM;EACA;AACA;AAAA;;;;;;;;;;;;;;ACnDA;;;;;;;;;;;;;;;;;;;AACA;EACAC,OAAAA,mBAAAA,CAAAA,IAAAA;EACAC,UAAAA,mBAAAA,CAAAA,EAAAA;EACAC,SAAAA,mBAAAA,CAAAA,IAAAA;EACAC,UAAAA,mBAAAA,CAAAA,IAAAA;EACArJ,QAAAA,mBAAAA,CAAAA,GAAAA;EACA;EACAsJ,YAAAA,mBAAAA,CAAAA,IAAAA;EACAC,YAAAA,mBAAAA,CAAAA,IAAAA;EACAC,SAAAA,mBAAAA,CAAAA,IAAAA;EACAC,UAAAA,mBAAAA,CAAAA,IAAAA;EACAC,KAAAA,mBAAAA,CAA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ACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qBAAM;AACjB,MAAM,qBAAM;AACZ;AACA;;AAEA;AACA,sBAAsB;;AAEtB;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG,IAAI,eAAe;;AAEtB;AACA;AACA,GAAG,IAAI,eAAe;AACtB;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,eAAe;AAC1B,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,4BAA4B;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C,2BAA2B;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,cAAc;;AAEzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,KAAqC,GAAG,EAE5C;;AAEH;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,KAAqC,GAAG,EAK5C;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO,KAAqC,GAAG,EAE5C;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,KAAqC,GAAG,EAK5C;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,qCAAqC;AAClE;AACA;;AAEA;AACA,6BAA6B;AAC7B,yEAAyE;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAqC,GAAG,EAI5C;;AAEH,iCAAiC;AACjC,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,wBAAwB;;AAE9D;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,SAAS;;AAEtC;AACA;AACA;;AAEA;AACA,OAAO,KAAqC,GAAG,EAE5C;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA,SAAS,KAAqC,GAAG,EAE5C;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,8BAA8B,qCAAqC;;AAEnE;AACA,IAAI,KACyB;AAC7B,IAAI,EAKD;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB;AACjB;AACA;AACA,SAAS,KAAqC,GAAG,EAE5C;AACL;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,oBAAoB;AACnD,gCAAgC,0CAA0C;AAC1E,IAAI;AACJ,SAAS,KAAqC,GAAG,EAG5C;AACL;;AAEA;AACA,iDAAiD,0BAA0B;AAC3E;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD,oCAAoC,yCAAyC;AAC7E,QAAQ;AACR,aAAa,KAAqC,GAAG,EAG5C;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,mBAAmB;AACtD,oCAAoC,gDAAgD;AACpF,QAAQ;AACR,aAAa,KAAqC,GAAG,EAG5C;AACT;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,aAAa;AACvD;AACA;;AAEA;AACA;;AAEA,OAAO,KAAqC,GAAG,EAE5C;AACH,8CAA8C,8CAA8C;AAC5F;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,kCAAkC;;AAElC,OAAO,KAAqC,GAAG,EAG5C;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kCAAkC;;AAElC,OAAO,KAAqC,GAAG,EAE5C;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,kCAAkC;;AAElC,OAAO,KAAqC,GAAG,EAE5C;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wBAAwB;AACjD;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,+BAA+B,0BAA0B;AACzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,YAAoB,oBAAoB,EAErF;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAqC,GAAG,EAM5C;AACP;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,KAAgE,EAAE,EAGrE;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,KAAkE,EAAE,EAGvE;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB,KAAK;AACL;AACA,yBAAyB;AACzB;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,KAAqC,GAAG,EAE5C;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,2BAA2B;AAC5D,SAAS,KAAqC,GAAG,EAE5C;AACL,GAAG,IAAI,wBAAwB;AAC/B;;AAEA;AACA,6CAA6C,oBAAoB;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAqC,GAAG,EAE5C;;AAEH,WAAW;AACX;;AAEA;AACA;AACA,SAAS,KAAqC,GAAG,EAI5C;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,WAAW;AACX;AACA;AACA;AACA,MAAM,KAA8D,EAAE,EAEnE;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;AACA,MAAM,KAAiE,EAAE,EAEtE;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,W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ACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,IAAI,wCAAwC;;AAEpF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB,2BAA2B;AAC3B;;AAEA,uBAAuB;AACvB,wBAAwB;AACxB,uBAAuB;AACvB,sBAAsB,4CAA4C;;AAElE;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA,IAAI;AACJ;AACA;AACA;AACA;;;;;;;UCrWA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;WCJA;;;;;;;;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA,MAAM,KAAuC,EAAE,yBAQ5C;;AAEH;AACA;AACA,IAAI,qBAAuB;AAC3B;AACA;;AAEA;AACA,kDAAe,IAAI;;;;;ACtBK;AACA;AACxB,8CAAe,mBAAG;AACI","sources":["webpack://zenuml/core/webpack/universalModuleDefinition","webpack://zenuml/core/./src/components/Block.vue?c8db","webpack://zenuml/core/./src/components/Block.vue?6c27","webpack://zenuml/core/./src/components/Block.vue","webpack://zenuml/core/./src/components/Comment.vue?235c","webpack://zenuml/core/./src/components/Comment.vue?a543","webpack://zenuml/core/./src/components/Comment.vue","webpack://zenuml/core/./src/components/Debug/Debug.vue?a82c","webpack://zenuml/core/./src/components/Debug/Debug.vue?a07f","webpack://zenuml/core/./src/components/Debug/Debug.vue","webpack://zenuml/core/./src/components/DiagramFrame.vue?11fe","webpack://zenuml/core/./src/components/DiagramFrame.vue?2d68","webpack://zenuml/core/./src/components/DiagramFrame.vue?201d","webpack://zenuml/core/./src/components/DiagramFrame.vue?e1bf","webpack://zenuml/core/./src/components/DiagramFrame.vue","webpack://zenuml/core/./src/components/DiagramTitle.vue?cf14","webpack://zenuml/core/./src/components/DiagramTitle.vue?6acb","webpack://zenuml/core/./src/components/DiagramTitle.vue","webpack://zenuml/core/./src/components/Divider.vue?9607","webpack://zenuml/core/./src/components/Divider.vue?a530","webpack://zenuml/core/./src/components/Divider.vue?477c","webpack://zenuml/core/./src/components/Divider.vue?b40e","webpack://zenuml/core/./src/components/Divider.vue","webpack://zenuml/core/./src/components/FragmentAlt.vue?07e2","webpack://zenuml/core/./src/components/FragmentAlt.vue?057e","webpack://zenuml/core/./src/components/FragmentAlt.vue?1ed6","webpack://zenuml/core/./src/components/FragmentAlt.vue","webpack://zenuml/core/./src/components/FragmentLoop.vue?aab9","webpack://zenuml/core/./src/components/FragmentLoop.vue?a326","webpack://zenuml/core/./src/components/FragmentLoop.vue?2614","webpack://zenuml/core/./src/components/FragmentLoop.vue","webpack://zenuml/core/./src/components/FragmentOpt.vue?5a3a","webpack://zenuml/core/./src/components/FragmentOpt.vue?89e3","webpack://zenuml/core/./src/components/FragmentOpt.vue?ed2b","webpack://zenuml/core/./src/components/FragmentOpt.vue","webpack://zenuml/core/./src/components/FragmentPar.vue?e1f8","webpack://zenuml/core/./src/components/FragmentPar.vue?43ef","webpack://zenuml/core/./src/components/FragmentPar.vue?a172","webpack://zenuml/core/./src/components/FragmentPar.vue?042c","webpack://zenuml/core/./src/components/FragmentPar.vue?e939","webpack://zenuml/core/./src/components/FragmentPar.vue","webpack://zenuml/core/./src/components/FragmentTryCatchFinally.vue?6597","webpack://zenuml/core/./src/components/FragmentTryCatchFinally.vue?2106","webpack://zenuml/core/./src/components/FragmentTryCatchFinally.vue?73c7","webpack://zenuml/core/./src/components/FragmentTryCatchFinally.vue","webpack://zenuml/core/./src/components/Interaction-async.vue?953e","webpack://zenuml/core/./src/components/Interaction-async.vue?6869","webpack://zenuml/core/./src/components/Interaction-async.vue?3c10","webpack://zenuml/core/./src/components/Interaction-async.vue?377c","webpack://zenuml/core/./src/components/Interaction-async.vue","webpack://zenuml/core/./src/components/Message.vue?5d78","webpack://zenuml/core/./src/components/Message.vue?5171","webpack://zenuml/core/./src/components/Message.vue","webpack://zenuml/core/./src/components/MessageLayer.vue?c4c2","webpack://zenuml/core/./src/components/MessageLayer.vue?5fdf","webpack://zenuml/core/./src/components/MessageLayer.vue?dbc0","webpack://zenuml/core/./src/components/MessageLayer.vue?2540","webpack://zenuml/core/./src/components/MessageLayer.vue","webpack://zenuml/core/./src/components/Occurrence.vue?1d3f","webpack://zenuml/core/./src/components/Occurrence.vue?218f","webpack://zenuml/core/./src/components/Occurrence.vue?9930","webpack://zenuml/core/./src/components/Occurrence.vue?b549","webpack://zenuml/core/./src/components/Occurrence.vue?dadb","webpack://zenuml/core/./src/components/Occurrence.vue?19d0","webpack://zenuml/core/./src/components/Occurrence.vue","webpack://zenuml/core/./src/components/Point.vue?a9bc","webpack://zenuml/core/./src/components/Point.vue?3d02","webpack://zenuml/core/./src/components/Point.vue?d8e5","webpack://zenuml/core/./src/components/Point.vue?8131","webpack://zenuml/core/./src/components/Point.vue","webpack://zenuml/core/./src/components/Return.vue?e89e","webpack://zenuml/core/./src/components/Return.vue?fcec","webpack://zenuml/core/./src/components/Return.vue","webpack://zenuml/core/./src/components/SelfInvocation-async.vue?a126","webpack://zenuml/core/./src/components/SelfInvocation-async.vue?fd5a","webpack://zenuml/core/./src/components/SelfInvocation-async.vue?a8a5","webpack://zenuml/core/./src/components/SelfInvocation-async.vue?3b1c","webpack://zenuml/core/./src/components/SelfInvocation-async.vue","webpack://zenuml/core/./src/components/SelfInvocation.vue?7957","webpack://zenuml/core/./src/components/SelfInvocation.vue?bf53","webpack://zenuml/core/./src/components/SelfInvocation.vue?226f","webpack://zenuml/core/./src/components/SelfInvocation.vue?faef","webpack://zenuml/core/./src/components/SelfInvocation.vue","webpack://zenuml/core/./src/components/SeqDiagram.vue?e6ab","webpack://zenuml/core/./src/components/SeqDiagram.vue?2b66","webpack://zenuml/core/./src/components/SeqDiagram.vue?dc78","webpack://zenuml/core/./src/components/SeqDiagram.vue?47e9","webpack://zenuml/core/./src/components/SeqDiagram.vue","webpack://zenuml/core/./src/components/Statement.vue?50f8","webpack://zenuml/core/./src/components/Statement.vue?e002","webpack://zenuml/core/./src/components/Statement.vue?42e5","webpack://zenuml/core/./src/components/Statement.vue?eeb7","webpack://zenuml/core/./src/components/Statement.vue","webpack://zenuml/core/./src/components/creation/Creation.vue?c02e","webpack://zenuml/core/./src/components/creation/Creation.vue?e8bc","webpack://zenuml/core/./src/components/creation/Creation.vue","webpack://zenuml/core/./src/components/interaction/Interaction.vue?013c","webpack://zenuml/core/./src/components/interaction/Interaction.vue?7077","webpack://zenuml/core/./src/components/interaction/Interaction.vue?cf1b","webpack://zenuml/core/./src/components/interaction/Interaction.vue?2360","webpack://zenuml/core/./src/components/interaction/Interaction.vue","webpack://zenuml/core/./src/components/lifeline/LifeLine.vue?d854","webpack://zenuml/core/./src/components/lifeline/LifeLine.vue?a346","webpack://zenuml/core/./src/components/lifeline/LifeLine.vue?86b6","webpack://zenuml/core/./src/components/lifeline/LifeLine.vue?ac7f","webpack://zenuml/core/./src/components/lifeline/LifeLine.vue","webpack://zenuml/core/./src/components/lifeline/LifeLineGroup.vue?2f69","webpack://zenuml/core/./src/components/lifeline/LifeLineGroup.vue?6c6e","webpack://zenuml/core/./src/components/lifeline/LifeLineGroup.vue","webpack://zenuml/core/./src/components/lifeline/LifeLineLayer.vue?acd3","webpack://zenuml/core/./src/components/lifeline/LifeLineLayer.vue?8fec","webpack://zenuml/core/./src/components/lifeline/LifeLineLayer.vue","webpack://zenuml/core/./src/components/lifeline/Participant.vue?6d62","webpack://zenuml/core/./src/components/lifeline/Participant.vue?44ad","webpack://zenuml/core/./src/components/lifeline/Participant.vue","webpack://zenuml/core/./src/components/positioning/WidthProvider.vue?84a2","webpack://zenuml/core/./src/components/positioning/WidthProvider.vue?3eff","webpack://zenuml/core/./src/components/positioning/WidthProvider.vue","webpack://zenuml/core/./src/components/privacy/Privacy.vue?67b1","webpack://zenuml/core/./src/components/privacy/Privacy.vue?6902","webpack://zenuml/core/./src/components/privacy/Privacy.vue?3924","webpack://zenuml/core/./src/components/privacy/Privacy.vue?3e11","webpack://zenuml/core/./src/components/privacy/Privacy.vue","webpack://zenuml/core/./src/components/tutorial/IconList.vue?4a41","webpack://zenuml/core/./src/components/tutorial/IconList.vue?172d","webpack://zenuml/core/./src/components/tutorial/IconList.vue","webpack://zenuml/core/./src/components/tutorial/TipsDialog.vue?476f","webpack://zenuml/core/./src/components/tutorial/TipsDialog.vue?eb83","webpack://zenuml/core/./src/components/tutorial/TipsDialog.vue?717c","webpack://zenuml/core/./src/components/tutorial/TipsDialog.vue","webpack://zenuml/core/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://zenuml/core/./node_modules/antlr4/BufferedTokenStream.js","webpack://zenuml/core/./node_modules/antlr4/CharStreams.js","webpack://zenuml/core/./node_modules/antlr4/CommonTokenFactory.js","webpack://zenuml/core/./node_modules/antlr4/CommonTokenStream.js","webpack://zenuml/core/./node_modules/antlr4/FileStream.js","webpack://zenuml/core/./node_modules/antlr4/InputStream.js","webpack://zenuml/core/./node_modules/antlr4/IntervalSet.js","webpack://zenuml/core/./node_modules/antlr4/LL1Analyzer.js","webpack://zenuml/core/./node_modules/antlr4/Lexer.js","webpack://zenuml/core/./node_modules/antlr4/Parser.js","webpack://zenuml/core/./node_modules/antlr4/ParserRuleContext.js","webpack://zenuml/core/./node_modules/antlr4/PredictionContext.js","webpack://zenuml/core/./node_modules/antlr4/Recognizer.js","webpack://zenuml/core/./node_modules/antlr4/RuleContext.js","webpack://zenuml/core/./node_modules/antlr4/Token.js","webpack://zenuml/core/./node_modules/antlr4/Utils.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATN.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNConfig.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNConfigSet.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNDeserializationOptions.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNDeserializer.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNSimulator.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNState.js","webpack://zenuml/core/./node_modules/antlr4/atn/ATNType.js","webpack://zenuml/core/./node_modules/antlr4/atn/LexerATNSimulator.js","webpack://zenuml/core/./node_modules/antlr4/atn/LexerAction.js","webpack://zenuml/core/./node_modules/antlr4/atn/LexerActionExecutor.js","webpack://zenuml/core/./node_modules/antlr4/atn/ParserATNSimulator.js","webpack://zenuml/core/./node_modules/antlr4/atn/PredictionMode.js","webpack://zenuml/core/./node_modules/antlr4/atn/SemanticContext.js","webpack://zenuml/core/./node_modules/antlr4/atn/Transition.js","webpack://zenuml/core/./node_modules/antlr4/atn/index.js","webpack://zenuml/core/./node_modules/antlr4/dfa/DFA.js","webpack://zenuml/core/./node_modules/antlr4/dfa/DFASerializer.js","webpack://zenuml/core/./node_modules/antlr4/dfa/DFAState.js","webpack://zenuml/core/./node_modules/antlr4/dfa/index.js","webpack://zenuml/core/./node_modules/antlr4/error/DiagnosticErrorListener.js","webpack://zenuml/core/./node_modules/antlr4/error/ErrorListener.js","webpack://zenuml/core/./node_modules/antlr4/error/ErrorStrategy.js","webpack://zenuml/core/./node_modules/antlr4/error/Errors.js","webpack://zenuml/core/./node_modules/antlr4/error/index.js","webpack://zenuml/core/./node_modules/antlr4/index.js","webpack://zenuml/core/./node_modules/antlr4/polyfills/codepointat.js","webpack://zenuml/core/./node_modules/antlr4/polyfills/fromcodepoint.js","webpack://zenuml/core/./node_modules/antlr4/tree/Tree.js","webpack://zenuml/core/./node_modules/antlr4/tree/Trees.js","webpack://zenuml/core/./node_modules/antlr4/tree/index.js","webpack://zenuml/core/./node_modules/color-name/index.js","webpack://zenuml/core/./node_modules/color-string/index.js","webpack://zenuml/core/./node_modules/highlight.js/lib/core.js","webpack://zenuml/core/./node_modules/highlight.js/lib/languages/bash.js","webpack://zenuml/core/./node_modules/highlight.js/lib/languages/javascript.js","webpack://zenuml/core/./node_modules/highlight.js/lib/languages/plaintext.js","webpack://zenuml/core/./node_modules/highlight.js/lib/languages/yaml.js","webpack://zenuml/core/./node_modules/html-to-image/es/mimes.js","webpack://zenuml/core/./node_modules/html-to-image/es/dataurl.js","webpack://zenuml/core/./node_modules/html-to-image/es/util.js","webpack://zenuml/core/./node_modules/html-to-image/es/clone-pseudos.js","webpack://zenuml/core/./node_modules/html-to-image/es/clone-node.js","webpack://zenuml/core/./node_modules/html-to-image/es/embed-resources.js","webpack://zenuml/core/./node_modules/html-to-image/es/embed-images.js","webpack://zenuml/core/./node_modules/html-to-image/es/apply-style.js","webpack://zenuml/core/./node_modules/html-to-image/es/embed-webfonts.js","webpack://zenuml/core/./node_modules/html-to-image/es/index.js","webpack://zenuml/core/./node_modules/lodash/_Hash.js","webpack://zenuml/core/./node_modules/lodash/_ListCache.js","webpack://zenuml/core/./node_modules/lodash/_Map.js","webpack://zenuml/core/./node_modules/lodash/_MapCache.js","webpack://zenuml/core/./node_modules/lodash/_Stack.js","webpack://zenuml/core/./node_modules/lodash/_Symbol.js","webpack://zenuml/core/./node_modules/lodash/_Uint8Array.js","webpack://zenuml/core/./node_modules/lodash/_apply.js","webpack://zenuml/core/./node_modules/lodash/_arrayLikeKeys.js","webpack://zenuml/core/./node_modules/lodash/_assignMergeValue.js","webpack://zenuml/core/./node_modules/lodash/_assignValue.js","webpack://zenuml/core/./node_modules/lodash/_assocIndexOf.js","webpack://zenuml/core/./node_modules/lodash/_baseAssignValue.js","webpack://zenuml/core/./node_modules/lodash/_baseCreate.js","webpack://zenuml/core/./node_modules/lodash/_baseFor.js","webpack://zenuml/core/./node_modules/lodash/_baseGetTag.js","webpack://zenuml/core/./node_modules/lodash/_baseIsArguments.js","webpack://zenuml/core/./node_modules/lodash/_baseIsNative.js","webpack://zenuml/core/./node_modules/lodash/_baseIsTypedArray.js","webpack://zenuml/core/./node_modules/lodash/_baseKeysIn.js","webpack://zenuml/core/./node_modules/lodash/_baseMerge.js","webpack://zenuml/core/./node_modules/lodash/_baseMergeDeep.js","webpack://zenuml/core/./node_modules/lodash/_baseRest.js","webpack://zenuml/core/./node_modules/lodash/_baseSetToString.js","webpack://zenuml/core/./node_modules/lodash/_baseTimes.js","webpack://zenuml/core/./node_modules/lodash/_baseTrim.js","webpack://zenuml/core/./node_modules/lodash/_baseUnary.js","webpack://zenuml/core/./node_modules/lodash/_cloneArrayBuffer.js","webpack://zenuml/core/./node_modules/lodash/_cloneBuffer.js","webpack://zenuml/core/./node_modules/lodash/_cloneTypedArray.js","webpack://zenuml/core/./node_modules/lodash/_copyArray.js","webpack://zenuml/core/./node_modules/lodash/_copyObject.js","webpack://zenuml/core/./node_modules/lodash/_coreJsData.js","webpack://zenuml/core/./node_modules/lodash/_createAssigner.js","webpack://zenuml/core/./node_modules/lodash/_createBaseFor.js","webpack://zenuml/core/./node_modules/lodash/_defineProperty.js","webpack://zenuml/core/./node_modules/lodash/_freeGlobal.js","webpack://zenuml/core/./node_modules/lodash/_getMapData.js","webpack://zenuml/core/./node_modules/lodash/_getNative.js","webpack://zenuml/core/./node_modules/lodash/_getPrototype.js","webpack://zenuml/core/./node_modules/lodash/_getRawTag.js","webpack://zenuml/core/./node_modules/lodash/_getValue.js","webpack://zenuml/core/./node_modules/lodash/_hashClear.js","webpack://zenuml/core/./node_modules/lodash/_hashDelete.js","webpack://zenuml/core/./node_modules/lodash/_hashGet.js","webpack://zenuml/core/./node_modules/lodash/_hashHas.js","webpack://zenuml/core/./node_modules/lodash/_hashSet.js","webpack://zenuml/core/./node_modules/lodash/_initCloneObject.js","webpack://zenuml/core/./node_modules/lodash/_isIndex.js","webpack://zenuml/core/./node_modules/lodash/_isIterateeCall.js","webpack://zenuml/core/./node_modules/lodash/_isKeyable.js","webpack://zenuml/core/./node_modules/lodash/_isMasked.js","webpack://zenuml/core/./node_modules/lodash/_isPrototype.js","webpack://zenuml/core/./node_modules/lodash/_listCacheClear.js","webpack://zenuml/core/./node_modules/lodash/_listCacheDelete.js","webpack://zenuml/core/./node_modules/lodash/_listCacheGet.js","webpack://zenuml/core/./node_modules/lodash/_listCacheHas.js","webpack://zenuml/core/./node_modules/lodash/_listCacheSet.js","webpack://zenuml/core/./node_modules/lodash/_mapCacheClear.js","webpack://zenuml/core/./node_modules/lodash/_mapCacheDelete.js","webpack://zenuml/core/./node_modules/lodash/_mapCacheGet.js","webpack://zenuml/core/./node_modules/lodash/_mapCacheHas.js","webpack://zenuml/core/./node_modules/lodash/_mapCacheSet.js","webpack://zenuml/core/./node_modules/lodash/_nativeCreate.js","webpack://zenuml/core/./node_modules/lodash/_nativeKeysIn.js","webpack://zenuml/core/./node_modules/lodash/_nodeUtil.js","webpack://zenuml/core/./node_modules/lodash/_objectToString.js","webpack://zenuml/core/./node_modules/lodash/_overArg.js","webpack://zenuml/core/./node_modules/lodash/_overRest.js","webpack://zenuml/core/./node_modules/lodash/_root.js","webpack://zenuml/core/./node_modules/lodash/_safeGet.js","webpack://zenuml/core/./node_modules/lodash/_setToString.js","webpack://zenuml/core/./node_modules/lodash/_shortOut.js","webpack://zenuml/core/./node_modules/lodash/_stackClear.js","webpack://zenuml/core/./node_modules/lodash/_stackDelete.js","webpack://zenuml/core/./node_modules/lodash/_stackGet.js","webpack://zenuml/core/./node_modules/lodash/_stackHas.js","webpack://zenuml/core/./node_modules/lodash/_stackSet.js","webpack://zenuml/core/./node_modules/lodash/_toSource.js","webpack://zenuml/core/./node_modules/lodash/_trimmedEndIndex.js","webpack://zenuml/core/./node_modules/lodash/constant.js","webpack://zenuml/core/./node_modules/lodash/debounce.js","webpack://zenuml/core/./node_modules/lodash/eq.js","webpack://zenuml/core/./node_modules/lodash/identity.js","webpack://zenuml/core/./node_modules/lodash/isArguments.js","webpack://zenuml/core/./node_modules/lodash/isArray.js","webpack://zenuml/core/./node_modules/lodash/isArrayLike.js","webpack://zenuml/core/./node_modules/lodash/isArrayLikeObject.js","webpack://zenuml/core/./node_modules/lodash/isBuffer.js","webpack://zenuml/core/./node_modules/lodash/isFunction.js","webpack://zenuml/core/./node_modules/lodash/isLength.js","webpack://zenuml/core/./node_modules/lodash/isObject.js","webpack://zenuml/core/./node_modules/lodash/isObjectLike.js","webpack://zenuml/core/./node_modules/lodash/isPlainObject.js","webpack://zenuml/core/./node_modules/lodash/isSymbol.js","webpack://zenuml/core/./node_modules/lodash/isTypedArray.js","webpack://zenuml/core/./node_modules/lodash/keysIn.js","webpack://zenuml/core/./node_modules/lodash/mergeWith.js","webpack://zenuml/core/./node_modules/lodash/now.js","webpack://zenuml/core/./node_modules/lodash/stubFalse.js","webpack://zenuml/core/./node_modules/lodash/toNumber.js","webpack://zenuml/core/./node_modules/lodash/toPlainObject.js","webpack://zenuml/core/./node_modules/marked/lib/marked.js","webpack://zenuml/core/./src/assets/tailwind.css","webpack://zenuml/core/./src/assets/themes/handwriting.css","webpack://zenuml/core/./src/components/Cosmetic-black-white.scss","webpack://zenuml/core/./src/components/Cosmetic-blue.scss","webpack://zenuml/core/./src/components/Cosmetic-star-uml.scss","webpack://zenuml/core/./src/components/Cosmetic.scss","webpack://zenuml/core/./src/components/theme-blue-river.scss","webpack://zenuml/core/./node_modules/quick-format-unescaped/index.js","webpack://zenuml/core/./node_modules/ramda/src/bind.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_arity.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_checkForMethod.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_curry1.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_curry2.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_curry3.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_isArray.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_isArrayLike.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_isPlaceholder.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_isString.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_pipe.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_reduce.js","webpack://zenuml/core/./node_modules/ramda/src/internal/_xwrap.js","webpack://zenuml/core/./node_modules/ramda/src/pipe.js","webpack://zenuml/core/./node_modules/ramda/src/reduce.js","webpack://zenuml/core/./node_modules/ramda/src/replace.js","webpack://zenuml/core/./node_modules/ramda/src/slice.js","webpack://zenuml/core/./node_modules/ramda/src/tail.js","webpack://zenuml/core/./node_modules/simple-swizzle/index.js","webpack://zenuml/core/./node_modules/simple-swizzle/node_modules/is-arrayish/index.js","webpack://zenuml/core/./src/core.ts","webpack://zenuml/core/./src/logger/logger.ts","webpack://zenuml/core/./src/parser/CodeRange.ts","webpack://zenuml/core/./src/parser/From.ts","webpack://zenuml/core/./src/parser/Participants.ts","webpack://zenuml/core/./src/parser/SignatureText.ts","webpack://zenuml/core/./src/parser/key/Key.ts","webpack://zenuml/core/./src/parser/utils/cloest-ancestor/ClosestAncestor.ts","webpack://zenuml/core/./src/positioning/Constants.ts","webpack://zenuml/core/./src/positioning/Coordinate.ts","webpack://zenuml/core/./src/positioning/Coordinates.ts","webpack://zenuml/core/./src/positioning/MessageContextListener.ts","webpack://zenuml/core/./src/positioning/OrderedParticipants.ts","webpack://zenuml/core/./src/positioning/OwnableMessage.ts","webpack://zenuml/core/./src/positioning/ParticipantListener.ts","webpack://zenuml/core/./src/positioning/WidthProviderFunc.ts","webpack://zenuml/core/./src/positioning/david/DavidEisenstat.ts","webpack://zenuml/core/./src/store/Store.ts","webpack://zenuml/core/./src/utils/Color.ts","webpack://zenuml/core/./src/utils/StringUtil.ts","webpack://zenuml/core/src/components/Block.vue","webpack://zenuml/core/src/components/Comment.vue","webpack://zenuml/core/src/components/Debug/Debug.vue","webpack://zenuml/core/src/components/DiagramFrame.vue","webpack://zenuml/core/src/components/DiagramTitle.vue","webpack://zenuml/core/src/components/Divider.vue","webpack://zenuml/core/src/components/FragmentAlt.vue","webpack://zenuml/core/src/components/FragmentLoop.vue","webpack://zenuml/core/src/components/FragmentOpt.vue","webpack://zenuml/core/src/components/FragmentPar.vue","webpack://zenuml/core/src/components/FragmentTryCatchFinally.vue","webpack://zenuml/core/src/components/Interaction-async.vue","webpack://zenuml/core/src/components/Message.vue","webpack://zenuml/core/src/components/MessageLayer.vue","webpack://zenuml/core/src/components/Occurrence.vue","webpack://zenuml/core/src/components/Point.vue","webpack://zenuml/core/src/components/Return.vue","webpack://zenuml/core/src/components/SelfInvocation-async.vue","webpack://zenuml/core/src/components/SelfInvocation.vue","webpack://zenuml/core/src/components/SeqDiagram.vue","webpack://zenuml/core/src/components/Statement.vue","webpack://zenuml/core/src/components/creation/Creation.vue","webpack://zenuml/core/src/components/interaction/Interaction.vue","webpack://zenuml/core/src/components/lifeline/LifeLine.vue","webpack://zenuml/core/src/components/lifeline/LifeLineGroup.vue","webpack://zenuml/core/src/components/lifeline/LifeLineLayer.vue","webpack://zenuml/core/src/components/lifeline/Participant.vue","webpack://zenuml/core/src/components/positioning/WidthProvider.vue","webpack://zenuml/core/src/components/privacy/Privacy.vue","webpack://zenuml/core/src/components/tutorial/IconList.vue","webpack://zenuml/core/src/components/tutorial/TipsDialog.vue","webpack://zenuml/core/./src/components/FragmentMixin.js","webpack://zenuml/core/./src/generated-parser/sequenceLexer.js","webpack://zenuml/core/./src/generated-parser/sequenceParser.js","webpack://zenuml/core/./src/generated-parser/sequenceParserListener.js","webpack://zenuml/core/./src/parser/ChildFragmentDetecotr.js","webpack://zenuml/core/./src/parser/IsCurrent.js","webpack://zenuml/core/./src/parser/Owner.js","webpack://zenuml/core/./src/parser/ProgContext.js","webpack://zenuml/core/./src/parser/RetContext.js","webpack://zenuml/core/./src/parser/StatContext.js","webpack://zenuml/core/./src/parser/TitleContext.js","webpack://zenuml/core/./src/parser/ToCollector.js","webpack://zenuml/core/./src/parser/index.js","webpack://zenuml/core/./node_modules/tslib/tslib.es6.js","webpack://zenuml/core/./node_modules/vuex/dist/vuex.esm.js","webpack://zenuml/core/external umd {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}","webpack://zenuml/core/ignored|/home/runner/work/core/core/node_modules/antlr4|fs","webpack://zenuml/core/./node_modules/pino/browser.js","webpack://zenuml/core/webpack/bootstrap","webpack://zenuml/core/webpack/runtime/define property getters","webpack://zenuml/core/webpack/runtime/global","webpack://zenuml/core/webpack/runtime/hasOwnProperty shorthand","webpack://zenuml/core/webpack/runtime/make namespace object","webpack://zenuml/core/webpack/runtime/node module decorator","webpack://zenuml/core/webpack/runtime/publicPath","webpack://zenuml/core/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://zenuml/core/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zenuml/core\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zenuml/core\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), (__WEBPACK_EXTERNAL_MODULE__7203__) => {\nreturn ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"block\"},_vm._l((_vm.statements),function(stat,index){return _c('div',{key:index,staticClass:\"statement-container\"},[_c('statement',{attrs:{\"context\":stat,\"selfCallIndent\":_vm.selfCallIndent}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Block.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Block.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Block.vue?vue&type=template&id=876ab7de&\"\nimport script from \"./Block.vue?vue&type=script&lang=js&\"\nexport * from \"./Block.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"comments text-left\",staticStyle:{\"padding-left\":\"12px\"},domProps:{\"innerHTML\":_vm._s(_vm.markedComment)}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=075dfa90&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.debug),expression:\"debug\"}]},[_c('div',{staticClass:\"flex flex-nowrap m-2 text-sm\"},[_c('div',{staticClass:\"ml-4 text-xs inline-flex items-center font-bold leading-sm px-3 py-1 bg-green-200 text-green-700 rounded-sm\"},[_c('svg',{staticClass:\"h-4 w-4\",attrs:{\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('line',{attrs:{\"x1\":\"6\",\"y1\":\"3\",\"x2\":\"6\",\"y2\":\"15\"}}),_c('circle',{attrs:{\"cx\":\"18\",\"cy\":\"6\",\"r\":\"3\"}}),_c('circle',{attrs:{\"cx\":\"6\",\"cy\":\"18\",\"r\":\"3\"}}),_c('path',{attrs:{\"d\":\"M18 9a9 9 0 0 1-9 9\"}})]),_c('span',{staticClass:\"inline-block px-2\"},[_vm._v(_vm._s(_vm.gitBranch)+\":\"+_vm._s(_vm.commitHash))])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Debug.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Debug.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Debug.vue?vue&type=template&id=31fef620&\"\nimport script from \"./Debug.vue?vue&type=script&lang=js&\"\nexport * from \"./Debug.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"export\",staticClass:\"zenuml\",class:_vm.theme,staticStyle:{\"display\":\"inline-block\"}},[_c('debug'),_c('div',{staticClass:\"frame relative m-1 origin-top-left whitespace-nowrap\",style:({transform: (\"scale(\" + _vm.scale + \")\")})},[_c('div',{ref:\"content\"},[_c('div',{staticClass:\"header flex justify-between\"},[_c('div',{staticClass:\"left hide-export\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"right flex-grow flex justify-between\"},[_c('diagram-title',{attrs:{\"context\":_vm.title}}),_c('privacy',{staticClass:\"hide-export\"})],1)]),_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTips),expression:\"showTips\"}],staticClass:\"fixed z-40 inset-0 overflow-y-auto\",attrs:{\"aria-labelledby\":\"modal-title\",\"role\":\"dialog\",\"aria-modal\":\"true\"}},[_c('TipsDialog')],1)]),_c('seq-diagram')],1),_c('div',{staticClass:\"footer mt-10 flex justify-between\"},[_c('button',{staticClass:\"bottom-1 left-1 hide-export\",on:{\"click\":function($event){return _vm.showTipsDialog()}}},[_c('svg',{staticClass:\"filter grayscale\",staticStyle:{\"width\":\"1em\",\"height\":\"1em\",\"vertical-align\":\"middle\",\"fill\":\"currentColor\",\"overflow\":\"hidden\"},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"d\":\"M514 912c-219.9 0-398.8-178.9-398.8-398.9 0-219.9 178.9-398.8 398.8-398.8s398.9 178.9 398.9 398.8c-0.1 220-179 398.9-398.9 398.9z m0-701.5c-166.9 0-302.7 135.8-302.7 302.7S347.1 815.9 514 815.9s302.7-135.8 302.7-302.7S680.9 210.5 514 210.5z\",\"fill\":\"#BDD2EF\"}}),_c('path',{attrs:{\"d\":\"M431.1 502.4c-0.1 0.3 0.3 0.4 0.4 0.2 6.9-11.7 56.5-89.1 23.4 167.3-17.4 134.7 122.9 153.6 142.3-7.9 0.1-1-1.3-1.4-1.7-0.4-11.9 37.2-49.6 104.9-4.7-155.2 18.6-107.2-127.6-146-159.7-4z\",\"fill\":\"#2867CE\"}}),_c('path',{attrs:{\"d\":\"M541.3 328m-68 0a68 68 0 1 0 136 0 68 68 0 1 0-136 0Z\",\"fill\":\"#2867CE\"}})])]),_c('div',{staticClass:\"zoom-controls flex justify-between w-28 bg-blue-100 hide-export\",style:({transform: (\"scale(\" + (1/_vm.scale) + \")\")})},[_c('button',{staticClass:\"zoom-in px-1\",on:{\"click\":function($event){return _vm.zoomIn()}}},[_vm._v(\"+\")]),_c('label',[_vm._v(_vm._s(Number(_vm.scale * 100).toFixed(0))+\" %\")]),_c('button',{staticClass:\"zoom-out px-1\",on:{\"click\":function($event){return _vm.zoomOut()}}},[_vm._v(\"-\")])]),_c('width-provider'),_c('a',{staticClass:\"absolute bottom-1 right-1 text-xs\",attrs:{\"target\":\"_blank\",\"href\":\"https://zenuml.com\"}},[_vm._v(\"ZenUML.com\")])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DiagramFrame.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DiagramFrame.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DiagramFrame.vue?vue&type=style&index=0&id=864193fe&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./DiagramFrame.vue?vue&type=template&id=864193fe&scoped=true&\"\nimport script from \"./DiagramFrame.vue?vue&type=script&lang=js&\"\nexport * from \"./DiagramFrame.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DiagramFrame.vue?vue&type=style&index=0&id=864193fe&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"864193fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"diagram-title\"},[_vm._v(_vm._s(_vm.title))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DiagramTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DiagramTitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DiagramTitle.vue?vue&type=template&id=4670183a&scoped=true&\"\nimport script from \"./DiagramTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./DiagramTitle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4670183a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"divider\",style:({width: _vm.width + 'px', transform: 'translateX(' + ((-1) * _vm.centerOfFrom + 10) + 'px)'})},[_c('div',{staticClass:\"left\"}),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.name))]),_c('div',{staticClass:\"right\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Divider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Divider.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Divider.vue?vue&type=style&index=0&id=59e59271&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./Divider.vue?vue&type=template&id=59e59271&scoped=true&\"\nimport script from \"./Divider.vue?vue&type=script&lang=js&\"\nexport * from \"./Divider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Divider.vue?vue&type=style&index=0&id=59e59271&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59e59271\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fragment alt\",style:(_vm.fragmentStyle)},[_c('div',{staticClass:\"segment\"},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_c('div',{staticClass:\"header\"},[_vm._m(0),_c('label',{staticClass:\"condition\"},[_vm._v(\"[\"+_vm._s(_vm.condition)+\"]\")])]),(_vm.blockInIfBlock)?_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.blockInIfBlock,\"selfCallIndent\":_vm.selfCallIndent}}):_vm._e()],1),_vm._l((_vm.alt.elseIfBlock()),function(elseIfBlock,index){return [_c('div',{key:index+500,staticClass:\"segment mt-2 border-t border-solid\"},[_c('div',{key:index+1000,staticClass:\"header\"},[_c('label',{staticClass:\"else-if\"},[_vm._v(\"else if\")]),_c('label',{staticClass:\"condition\"},[_vm._v(\"[\"+_vm._s(_vm.conditionFromIfElseBlock(elseIfBlock))+\"]\")])]),_c('block',{key:index+2000,style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.blockInElseIfBlock(elseIfBlock),\"selfCallIndent\":_vm.selfCallIndent}})],1)]}),(_vm.elseBlock)?[_c('div',{staticClass:\"segment mt-2 border-t border-solid\"},[_vm._m(1),_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.elseBlock,\"selfCallIndent\":_vm.selfCallIndent}})],1)]:_vm._e()],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"name\"},[_c('label',[_vm._v(\"Alt\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('label',[_vm._v(\"[else]\")])])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentAlt.vue?vue&type=template&id=cecb9b0e&\"","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentAlt.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentAlt.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FragmentAlt.vue?vue&type=template&id=cecb9b0e&\"\nimport script from \"./FragmentAlt.vue?vue&type=script&lang=js&\"\nexport * from \"./FragmentAlt.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fragment loop\",style:(_vm.fragmentStyle)},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_c('div',{staticClass:\"header\"},[_vm._m(0),_c('label',{staticClass:\"condition\"},[_vm._v(\"[\"+_vm._s(_vm.condition)+\"]\")])]),_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.blockInLoop,\"selfCallIndent\":_vm.selfCallIndent}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"name\"},[_c('label',[_vm._v(\"Loop\")])])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentLoop.vue?vue&type=template&id=28277ac7&\"","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentLoop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentLoop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FragmentLoop.vue?vue&type=template&id=28277ac7&\"\nimport script from \"./FragmentLoop.vue?vue&type=script&lang=js&\"\nexport * from \"./FragmentLoop.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fragment opt\",style:(_vm.fragmentStyle)},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_vm._m(0),_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.opt.braceBlock().block(),\"selfCallIndent\":_vm.selfCallIndent}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"name\"},[_c('label',[_vm._v(\"Opt\")])])])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentOpt.vue?vue&type=template&id=006b9ad6&\"","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentOpt.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentOpt.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FragmentOpt.vue?vue&type=template&id=006b9ad6&\"\nimport script from \"./FragmentOpt.vue?vue&type=script&lang=js&\"\nexport * from \"./FragmentOpt.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fragment par\",style:(_vm.fragmentStyle)},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_vm._m(0),_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.par.braceBlock().block(),\"selfCallIndent\":_vm.selfCallIndent}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"name\"},[_c('label',[_vm._v(\"Par\")])])])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentPar.vue?vue&type=template&id=2eee6b01&\"","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentPar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentPar.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentPar.vue?vue&type=style&index=0&id=2eee6b01&prod&lang=css&\"","import { render, staticRenderFns } from \"./FragmentPar.vue?vue&type=template&id=2eee6b01&\"\nimport script from \"./FragmentPar.vue?vue&type=script&lang=js&\"\nexport * from \"./FragmentPar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FragmentPar.vue?vue&type=style&index=0&id=2eee6b01&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fragment tcf\",style:(_vm.fragmentStyle)},[_c('div',{staticClass:\"segment\"},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_vm._m(0),(_vm.blockInTryBlock)?_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.blockInTryBlock,\"selfCallIndent\":_vm.selfCallIndent}}):_vm._e()],1),_vm._l((_vm.tcf.catchBlock()),function(catchBlock,index){return [_c('div',{key:index+500,staticClass:\"segment mt-2 border-t border-solid\"},[_c('div',{key:index+1000,staticClass:\"header\"},[_c('label',{staticClass:\"keyword catch\"},[_vm._v(\"catch\")]),_c('label',{staticClass:\"exception\"},[_vm._v(_vm._s(_vm.exception(catchBlock)))])]),_c('block',{key:index+2000,style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.blockInCatchBlock(catchBlock),\"selfCallIndent\":_vm.selfCallIndent}})],1)]}),(_vm.finallyBlock)?[_c('div',{staticClass:\"segment mt-2 border-t border-solid\"},[_vm._m(1),_c('block',{style:({paddingLeft: (_vm.offsetX + \"px\")}),attrs:{\"context\":_vm.finallyBlock,\"selfCallIndent\":_vm.selfCallIndent}})],1)]:_vm._e()],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header\"},[_c('div',{staticClass:\"name\"},[_c('label',[_vm._v(\"Try\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header finally\"},[_c('div',[_c('label',{staticClass:\"keyword finally\"},[_vm._v(\"finally\")])])])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentTryCatchFinally.vue?vue&type=template&id=44398d01&\"","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentTryCatchFinally.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FragmentTryCatchFinally.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FragmentTryCatchFinally.vue?vue&type=template&id=44398d01&\"\nimport script from \"./FragmentTryCatchFinally.vue?vue&type=script&lang=js&\"\nexport * from \"./FragmentTryCatchFinally.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"interaction async\",class:{ 'right-to-left':_vm.rightToLeft, 'highlight': _vm.isCurrent },style:({width: _vm.interactionWidth + 'px', transform: 'translateX(' + _vm.translateX + 'px)'}),attrs:{\"data-signature\":_vm.signature},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClick($event)}}},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_c(_vm.invocation,{tag:\"component\",attrs:{\"content\":_vm.signature,\"rtl\":_vm.rightToLeft,\"type\":\"async\"}}),_c('div',{staticClass:\"invisible-occurrence\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction-async.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction-async.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction-async.vue?vue&type=style&index=0&id=468901ce&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./Interaction-async.vue?vue&type=template&id=468901ce&scoped=true&\"\nimport script from \"./Interaction-async.vue?vue&type=script&lang=js&\"\nexport * from \"./Interaction-async.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Interaction-async.vue?vue&type=style&index=0&id=468901ce&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"468901ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message border-b-2 flex items-end\",class:{ 'flex-row-reverse': _vm.rtl,\n 'return': _vm.type === 'return',\n 'right-to-left':_vm.rtl, 'text-left': _vm.isAsync, 'text-center': !_vm.isAsync },style:({'border-bottom-style': _vm.borderStyle})},[_c('div',{staticClass:\"name flex-grow truncate hover:whitespace-normal hover:bg-yellow-300\",staticStyle:{\"padding-left\":\"10px\",\"float\":\"left\"}},[_vm._v(_vm._s(_vm.content))]),_c('point',{staticClass:\"flex-shrink-0 transform translate-y-1/2 -my-px\",attrs:{\"fill\":_vm.fill,\"rtl\":_vm.rtl}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Message.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Message.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Message.vue?vue&type=template&id=b26a6b32&\"\nimport script from \"./Message.vue?vue&type=script&lang=js&\"\nexport * from \"./Message.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message-layer pt-24 pb-1\"},[_c('block',{style:({'padding-left': _vm.paddingLeft + 'px'}),attrs:{\"context\":_vm.context}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageLayer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageLayer.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageLayer.vue?vue&type=style&index=0&id=9880b8ac&prod&lang=css&\"","import { render, staticRenderFns } from \"./MessageLayer.vue?vue&type=template&id=9880b8ac&\"\nimport script from \"./MessageLayer.vue?vue&type=script&lang=js&\"\nexport * from \"./MessageLayer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MessageLayer.vue?vue&type=style&index=0&id=9880b8ac&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"occurrence border-2 relative left-full\",class:{'right-to-left': _vm.rtl},attrs:{\"data-el-type\":\"occurrence\",\"data-belongs-to\":_vm.participant,\"data-x-offset\":_vm.center,\"data-debug-center-of\":_vm.computedCenter}},[(this.context.braceBlock())?_c('block',{attrs:{\"context\":_vm.context.braceBlock().block(),\"selfCallIndent\":_vm.selfCallIndent}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Occurrence.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Occurrence.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Occurrence.vue?vue&type=style&index=0&id=22ef3411&prod&scoped=true&lang=css&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Occurrence.vue?vue&type=style&index=1&id=22ef3411&prod&lang=css&\"","import { render, staticRenderFns } from \"./Occurrence.vue?vue&type=template&id=22ef3411&scoped=true&\"\nimport script from \"./Occurrence.vue?vue&type=script&lang=js&\"\nexport * from \"./Occurrence.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Occurrence.vue?vue&type=style&index=0&id=22ef3411&prod&scoped=true&lang=css&\"\nimport style1 from \"./Occurrence.vue?vue&type=style&index=1&id=22ef3411&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22ef3411\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"point\",class:{ 'fill': _vm.fill, 'no-fill': !_vm.fill, 'right-to-left':_vm.rtl }},[(!_vm.rtl)?_c('svg',{staticClass:\"arrow\",attrs:{\"height\":\"10\",\"width\":\"10\"}},[_c('polyline',{staticClass:\"right head\",attrs:{\"points\":\"0,0 10,5 0,10\"}})]):_vm._e(),(_vm.rtl)?_c('svg',{staticClass:\"arrow\",attrs:{\"height\":\"10\",\"width\":\"10\"}},[_c('polyline',{staticClass:\"left head\",attrs:{\"points\":\"10,0 0,5 10,10\"}})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Point.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Point.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Point.vue?vue&type=style&index=0&id=08af3d3e&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./Point.vue?vue&type=template&id=08af3d3e&scoped=true&\"\nimport script from \"./Point.vue?vue&type=script&lang=js&\"\nexport * from \"./Point.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Point.vue?vue&type=style&index=0&id=08af3d3e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"08af3d3e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"interaction return relative\",class:{ 'right-to-left':_vm.rightToLeft, 'highlight': _vm.isCurrent },style:({width: _vm.width + 'px', left: _vm.left + 'px'}),attrs:{\"data-signature\":_vm.signature},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClick($event)}}},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),(_vm.isSelf)?_c('div',{staticClass:\"flex items-center\"},[_c('svg',{staticClass:\"w-3 h-3 flex-shrink-0\",attrs:{\"viewBox\":\"0 0 512 512\"}},[_c('path',{staticClass:\"cls-1\",attrs:{\"d\":\"M256 0C114.84 0 0 114.84 0 256s114.84 256 256 256 256-114.84 256-256S397.16 0 256 0Zm0 469.33c-117.63 0-213.33-95.7-213.33-213.33S138.37 42.67 256 42.67 469.33 138.37 469.33 256 373.63 469.33 256 469.33Z\"}}),_c('path',{staticClass:\"cls-1\",attrs:{\"d\":\"M288 192h-87.16l27.58-27.58a21.33 21.33 0 1 0-30.17-30.17l-64 64a21.33 21.33 0 0 0 0 30.17l64 64a21.33 21.33 0 0 0 30.17-30.17l-27.58-27.58H288a53.33 53.33 0 0 1 0 106.67h-32a21.33 21.33 0 0 0 0 42.66h32a96 96 0 0 0 0-192Z\"}})]),_c('span',[_vm._v(_vm._s(_vm.signature))])]):_vm._e(),(!_vm.isSelf)?_c('Message',{attrs:{\"content\":_vm.signature,\"rtl\":_vm.rightToLeft,\"type\":\"return\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Return.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Return.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Return.vue?vue&type=template&id=a036bc98&\"\nimport script from \"./Return.vue?vue&type=script&lang=js&\"\nexport * from \"./Return.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message self flex items-start\",staticStyle:{\"border-width\":\"0\"}},[_c('svg',{staticClass:\"arrow\",attrs:{\"width\":\"34\",\"height\":\"34\"}},[_c('polyline',{attrs:{\"points\":\"0,2 28,2 28,25 1,25\"}}),_c('polyline',{staticClass:\"head\",attrs:{\"points\":\"11,19 1,25 11,31\"}})]),_c('label',{staticClass:\"name hover:bg-yellow-300\"},[(_vm.assignee)?_c('span',[_vm._v(_vm._s(_vm.assignee)+\" = \")]):_vm._e(),_vm._v(\" \"),(_vm.type === 'return')?_c('span',[_vm._v(\"return\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.content))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation-async.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation-async.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation-async.vue?vue&type=style&index=0&id=4ba620ac&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./SelfInvocation-async.vue?vue&type=template&id=4ba620ac&scoped=true&\"\nimport script from \"./SelfInvocation-async.vue?vue&type=script&lang=js&\"\nexport * from \"./SelfInvocation-async.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelfInvocation-async.vue?vue&type=style&index=0&id=4ba620ac&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ba620ac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"message self flex items-start\",staticStyle:{\"border-width\":\"0\"}},[_c('svg',{staticClass:\"arrow\",attrs:{\"width\":\"30\",\"height\":\"24\"}},[_c('polyline',{attrs:{\"points\":\"0,2 28,2 28,15 14,15\"}}),_c('polyline',{staticClass:\"head\",attrs:{\"points\":\"18,9 8,15 18,21\"}})]),_c('label',{staticClass:\"name hover:bg-yellow-300\"},[(_vm.assignee)?_c('span',[_vm._v(_vm._s(_vm.assignee)+\" = \")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.content))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelfInvocation.vue?vue&type=style&index=0&id=aa28e916&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./SelfInvocation.vue?vue&type=template&id=aa28e916&scoped=true&\"\nimport script from \"./SelfInvocation.vue?vue&type=script&lang=js&\"\nexport * from \"./SelfInvocation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SelfInvocation.vue?vue&type=style&index=0&id=aa28e916&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aa28e916\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"diagram\",staticClass:\"sequence-diagram overflow-visible mr-2\",style:({width: (_vm.width + \"px\"), paddingLeft: (_vm.paddingLeft + \"px\")})},[_c('life-line-layer',{attrs:{\"context\":_vm.rootContext.head()}}),_c('message-layer',{attrs:{\"context\":_vm.rootContext.block()}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeqDiagram.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeqDiagram.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeqDiagram.vue?vue&type=style&index=0&id=df1c277e&prod&lang=css&\"","import { render, staticRenderFns } from \"./SeqDiagram.vue?vue&type=template&id=df1c277e&\"\nimport script from \"./SeqDiagram.vue?vue&type=script&lang=js&\"\nexport * from \"./SeqDiagram.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SeqDiagram.vue?vue&type=style&index=0&id=df1c277e&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.subStatement,{tag:\"component\",attrs:{\"context\":_vm.context,\"comment\":_vm.comment,\"selfCallIndent\":_vm.selfCallIndent}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Statement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Statement.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Statement.vue?vue&type=style&index=0&id=349519aa&prod&lang=css&\"","import { render, staticRenderFns } from \"./Statement.vue?vue&type=template&id=349519aa&\"\nimport script from \"./Statement.vue?vue&type=script&lang=js&\"\nexport * from \"./Statement.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Statement.vue?vue&type=style&index=0&id=349519aa&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"interaction creation sync text-center transform\",class:{ 'right-to-left':_vm.rightToLeft, '-translate-x-full': _vm.rightToLeft, 'highlight': _vm.isCurrent },style:({width: _vm.interactionWidth + 'px'}),attrs:{\"data-signature\":_vm.signature},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClick($event)}}},[(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_c('div',{ref:\"messageContainer\",staticClass:\"message-container flex items-center h-10\",class:{ 'flex-row-reverse': _vm.rightToLeft},attrs:{\"data-type\":\"creation\",\"data-to\":_vm.to}},[_c('message',{ref:\"messageEl\",staticClass:\"invocation w-full transform -translate-y-1/2\",attrs:{\"content\":_vm.signature,\"rtl\":_vm.rightToLeft,\"type\":\"creation\"}}),_c('div',{ref:\"participantPlaceHolder\",staticClass:\"participant invisible right-0 flex flex-col justify-center flex-shrink-0\"},[_c('div',{staticClass:\"h-5 flex flex-col justify-center\"},[_c('label',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.to))])])])],1),_c('occurrence',{attrs:{\"context\":_vm.creation,\"participant\":_vm.to}}),(_vm.assignee)?_c('message',{staticClass:\"return transform -translate-y-full\",attrs:{\"content\":_vm.assignee,\"rtl\":!_vm.rightToLeft,\"type\":\"return\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Creation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Creation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Creation.vue?vue&type=template&id=42d76107&\"\nimport script from \"./Creation.vue?vue&type=script&lang=js&\"\nexport * from \"./Creation.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"interaction sync inline-block\",class:{ 'highlight': _vm.isCurrent, 'self': _vm.isSelf},style:({width: !_vm.isSelf && (_vm.interactionWidth + 'px'), transform: 'translateX(' + _vm.translateX + 'px)'}),attrs:{\"data-to\":_vm.to,\"data-type\":\"interaction\",\"data-signature\":_vm.signature},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClick($event)}}},[((_vm.showStarter && _vm.isRootBlock) || _vm.outOfBand)?_c('div',{staticClass:\"occurrence source border-2\",class:{'right-to-left': _vm.rightToLeft}}):_vm._e(),(_vm.comment)?_c('comment',{attrs:{\"comment\":_vm.comment}}):_vm._e(),_c(_vm.invocation,{tag:\"component\",staticClass:\"text-center\",attrs:{\"content\":_vm.signature,\"assignee\":_vm.assignee,\"rtl\":_vm.rightToLeft,\"type\":\"sync\"}}),_c('occurrence',{attrs:{\"context\":_vm.message,\"participant\":_vm.to,\"selfCallIndent\":_vm.passOnOffset,\"rtl\":_vm.rightToLeft}}),(_vm.assignee && !_vm.isSelf)?_c('message',{staticClass:\"return transform -translate-y-full\",attrs:{\"content\":_vm.assignee,\"rtl\":!_vm.rightToLeft,\"type\":\"return\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Interaction.vue?vue&type=style&index=0&id=ae9d59d8&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./Interaction.vue?vue&type=template&id=ae9d59d8&scoped=true&\"\nimport script from \"./Interaction.vue?vue&type=script&lang=js&\"\nexport * from \"./Interaction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Interaction.vue?vue&type=style&index=0&id=ae9d59d8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ae9d59d8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"lifeline absolute flex flex-col mx-2 transform -translate-x-1/2 h-full\",class:{'mt-8': !_vm.inGroup},style:({'paddingTop': _vm.top + 'px', left: _vm.left + 'px'}),attrs:{\"id\":_vm.entity.name}},[_c('participant',{attrs:{\"entity\":_vm.entity}}),_c('div',{staticClass:\"line w0 mx-auto flex-grow w-px\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLine.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLine.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLine.vue?vue&type=style&index=0&id=789d2d6c&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./LifeLine.vue?vue&type=template&id=789d2d6c&scoped=true&\"\nimport script from \"./LifeLine.vue?vue&type=script&lang=js&\"\nexport * from \"./LifeLine.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LifeLine.vue?vue&type=style&index=0&id=789d2d6c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"789d2d6c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.entities.length > 0)?_c('div',{staticClass:\"container absolute flex flex-col mt-8 h-full\",style:({left: (_vm.left + \"px\"), width: ((_vm.right-_vm.left) + \"px\")})},[_c('div',{staticClass:\"flex flex-col shadow shadow-slate-500/50 flex-grow\"},[_c('div',{staticClass:\"lifeline-group relative flex-grow hover:bg-green-100\"},_vm._l((_vm.entities),function(entity){return _c('life-line',{key:entity.name,ref:entity.name,refInFor:true,attrs:{\"inGroup\":\"true\",\"entity\":entity,\"group-left\":_vm.left}})}),1)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLineGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLineGroup.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LifeLineGroup.vue?vue&type=template&id=8705c61a&scoped=true&\"\nimport script from \"./LifeLineGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./LifeLineGroup.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8705c61a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"life-line-layer absolute h-full\",style:({'min-width': '200px'})},[(_vm.starterOnTheLeft)?_c('life-line',{staticClass:\"starter\",class:{invisible: _vm.invisibleStarter},attrs:{\"entity\":_vm.starterParticipant}}):_vm._e(),_vm._l((_vm.explicitGroupAndParticipants),function(child,index){return [(child instanceof _vm.GroupContext)?_c('life-line-group',{key:index,attrs:{\"context\":child}}):_vm._e(),(child instanceof _vm.ParticipantContext)?_c('life-line',{key:index,attrs:{\"entity\":_vm.getParticipantEntity(child)}}):_vm._e()]}),_vm._l((_vm.implicitParticipants),function(entity){return _c('life-line',{key:entity.name,attrs:{\"entity\":entity}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLineLayer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LifeLineLayer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LifeLineLayer.vue?vue&type=template&id=78968316&\"\nimport script from \"./LifeLineLayer.vue?vue&type=script&lang=js&\"\nexport * from \"./LifeLineLayer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"participant\",staticClass:\"relative participant flex flex-col justify-center z-10 h-10\",class:{'selected': _vm.selected, 'border-transparent': !!_vm.icon},style:({backgroundColor: _vm.backgroundColor, color: _vm.color}),on:{\"click\":_vm.onSelect}},[(!!_vm.icon)?_c('img',{staticClass:\"absolute left-1/2 transform -translate-x-1/2 -translate-y-full h-8\",attrs:{\"src\":_vm.icon,\"alt\":(\"icon for \" + (_vm.entity.name))}}):_vm._e(),_c('div',{staticClass:\"h-5 flex flex-col justify-center\"},[(_vm.stereotype)?_c('label',{staticClass:\"interface\"},[_vm._v(\"«\"+_vm._s(_vm.stereotype)+\"»\")]):_vm._e(),_c('label',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.entity.label || _vm.entity.name))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Participant.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Participant.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Participant.vue?vue&type=template&id=37971538&scoped=true&\"\nimport script from \"./Participant.vue?vue&type=script&lang=js&\"\nexport * from \"./Participant.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37971538\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invisible\"},[_c('message',{attrs:{\"content\":_vm.text,\"rtl\":\"false\",\"type\":\"sync\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WidthProvider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WidthProvider.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WidthProvider.vue?vue&type=template&id=01280118&scoped=true&\"\nimport script from \"./WidthProvider.vue?vue&type=script&lang=js&\"\nexport * from \"./WidthProvider.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01280118\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"tooltip bottom whitespace-normal\",attrs:{\"data-tooltip\":\"We (the vendor) do not have access to your data. The diagram is generated in this browser.\"}},[_c('img',{staticClass:\"object-contain h-6 w-6 m-auto\",attrs:{\"src\":_vm.iconPath,\"alt\":\"Privacy Icon\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Privacy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Privacy.vue?vue&type=script&lang=js&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Privacy.vue?vue&type=style&index=0&id=b73ef89e&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./Privacy.vue?vue&type=template&id=b73ef89e&scoped=true&\"\nimport script from \"./Privacy.vue?vue&type=script&lang=js&\"\nexport * from \"./Privacy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Privacy.vue?vue&type=style&index=0&id=b73ef89e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b73ef89e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"mt-3 grid grid-cols-4 gap-5 sm:gap-6 sm:grid-cols-6 lg:grid-cols-8\",attrs:{\"role\":\"list\"}},_vm._l((_vm.types),function(type){return _c('li',{key:type,staticClass:\"col-span-1 flex flex-col shadow-sm rounded-md\"},[_c('div',{staticClass:\"h-12 flex items-center justify-center bg-gray-50 text-white text-sm font-medium rounded-t-md\"},[(!!_vm.icon)?_c('img',{staticClass:\"object-contain h-8 w-8 m-auto\",attrs:{\"src\":_vm.icon(type),\"alt\":(\"icon for \" + type)}}):_vm._e()]),_c('div',{staticClass:\"flex items-center justify-center border-t border-r border-b border-gray-200 bg-white rounded-b-md\"},[_c('div',{staticClass:\"px-2 py-2 text-xs\"},[_c('span',{staticClass:\"text-gray-900 font-medium hover:text-gray-600\"},[_vm._v(\"@\"+_vm._s(type))])])])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconList.vue?vue&type=template&id=1d90e734&scoped=true&\"\nimport script from \"./IconList.vue?vue&type=script&lang=js&\"\nexport * from \"./IconList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d90e734\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block\"},[_c('div',{staticClass:\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"hidden sm:inline-block sm:align-middle sm:h-screen\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\")]),_c('div',{staticClass:\"z-40 inline-block align-bottom bg-white rounded-lg px-4 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:p-2\"},[_c('div',[_c('div',{staticClass:\"bg-white px-4 py-5 border-b border-gray-200 sm:px-6\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('h3',{staticClass:\"text-xl leading-6 font-medium text-gray-900 inline-block\"},[_vm._v(\" ZenUML Tips \")]),_c('button',{staticClass:\"float-right bg-white rounded-md inline-flex items-center justify-center text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.closeTipsDialog()}}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Close menu\")]),_c('svg',{staticClass:\"h-6 w-6\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"none\",\"viewBox\":\"0 0 24 24\",\"stroke\":\"currentColor\",\"aria-hidden\":\"true\"}},[_c('path',{attrs:{\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",\"stroke-width\":\"2\",\"d\":\"M6 18L18 6M6 6l12 12\"}})])])]),_c('div',{attrs:{\"slot\":\"body\"},slot:\"body\"},[_c('div',{staticClass:\"relative bg-white pb-32 mt-4 overflow-hidden\"},[_c('div',{staticClass:\"relative\"},[_c('div',{staticClass:\"lg:mx-auto lg:max-w-11/12 lg:px-8\"},[_vm._m(0),_c('div',{staticClass:\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\"},[_c('h2',{staticClass:\"mt-8 mb-4 text-lg leading-6 font-medium text-gray-900\"},[_vm._v(\"Builtin Icons\")]),_vm._m(1),_c('IconList',{attrs:{\"types\":_vm.standardTypes}}),_c('hr',{staticClass:\"mt-4\"}),_c('IconList',{attrs:{\"types\":_vm.awsServices}}),_c('hr',{staticClass:\"mt-4\"}),_c('IconList',{attrs:{\"types\":_vm.azureServices}}),_c('hr',{staticClass:\"mt-4\"}),_c('IconList',{attrs:{\"types\":_vm.googleServices}})],1)])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1\"},[_c('div',[_c('div',{staticClass:\"px-4 max-w-full mx-auto sm:px-6 lg:max-w-none lg:mx-0\"},[_c('h2',{staticClass:\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\"},[_vm._v(\"Declare Participants\")]),_c('pre',{staticClass:\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"},[_c('code',[_vm._v(\"// Define a Starter (optional)\\n@Starter(A)\\n\\n// Show icons\\n@EC2 A\\n\\n// Use 'group' keyword\\ngroup GroupName { B C }\\n\\n// Use stereotype\\n<<servlet>> ServiceX\")])])]),_c('div',{staticClass:\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\"},[_c('h2',{staticClass:\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\"},[_vm._v(\"Divider\")]),_c('pre',{staticClass:\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"},[_c('code',[_vm._v(\"A.method()\\n==divider name==\\nB.method()\\n\")])])])]),_c('div',{staticClass:\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\"},[_c('h2',{staticClass:\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\"},[_vm._v(\"Fragments\")]),_c('pre',{staticClass:\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"},[_c('code',[_vm._v(\"// Alt (AKA if/else)\\nif(condition1) {}\\nelse if (condition2) {}\\nelse {}\\n\\n// `loop`, `for`, `forEach`, `while`\\n// are treated the same\\nforEach(records) {}\\n\\n// Opt\\nopt {}\\n\\n// Par\\npar {}\\n\\n// Try Catch Finally\\ntry {} catch() {} finally {}\\n\")])])]),_c('div',{staticClass:\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\"},[_c('h2',{staticClass:\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\"},[_vm._v(\"Messages\")]),_c('pre',{staticClass:\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"},[_c('code',[_vm._v(\"//Creation\\nnew ParticipantName()\\n\\n//Sync Message\\nA.method\\nA->B.method\\n\\n//Async Message\\nA->B: async message\\n\\n//Reply Message, three styles\\nx = A.method\\nA.method() {\\n return x\\n}\\nA.method() {\\n @return A->B: message\\n}\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"text-sm text-gray-500\"},[_vm._v(\"Use \"),_c('span',{staticClass:\"rounded inline-block bg-gray-50 text-gray-600\"},[_c('code',{staticClass:\"text-xs\"},[_vm._v(\"@Actor TheParticipant\")])]),_vm._v(\" to define the type of the participant.\")])}]\n\nexport { render, staticRenderFns }","export * from \"-!../../../node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TipsDialog.vue?vue&type=template&id=74dfb066&scoped=true&\"","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TipsDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TipsDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TipsDialog.vue?vue&type=template&id=74dfb066&scoped=true&\"\nimport script from \"./TipsDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./TipsDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74dfb066\",\n null\n \n)\n\nexport default component.exports","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// This implementation of {@link TokenStream} loads tokens from a\n// {@link TokenSource} on-demand, and places the tokens in a buffer to provide\n// access to any previous token by index.\n//\n// <p>\n// This token stream ignores the value of {@link Token//getChannel}. If your\n// parser requires the token stream filter tokens to only those on a particular\n// channel, such as {@link Token//DEFAULT_CHANNEL} or\n// {@link Token//HIDDEN_CHANNEL}, use a filtering token stream such a\n// {@link CommonTokenStream}.</p>\n\nvar Token = require('./Token').Token;\nvar Lexer = require('./Lexer').Lexer;\nvar Interval = require('./IntervalSet').Interval;\n\n// this is just to keep meaningful parameter types to Parser\nfunction TokenStream() {\n\treturn this;\n}\n\nfunction BufferedTokenStream(tokenSource) {\n\n\tTokenStream.call(this);\n\t// The {@link TokenSource} from which tokens for this stream are fetched.\n\tthis.tokenSource = tokenSource;\n\n\t// A collection of all tokens fetched from the token source. The list is\n\t// considered a complete view of the input once {@link //fetchedEOF} is set\n\t// to {@code true}.\n\tthis.tokens = [];\n\n\t// The index into {@link //tokens} of the current token (next token to\n\t// {@link //consume}). {@link //tokens}{@code [}{@link //p}{@code ]} should\n\t// be\n\t// {@link //LT LT(1)}.\n\t//\n\t// <p>This field is set to -1 when the stream is first constructed or when\n\t// {@link //setTokenSource} is called, indicating that the first token has\n\t// not yet been fetched from the token source. For additional information,\n\t// see the documentation of {@link IntStream} for a description of\n\t// Initializing Methods.</p>\n\tthis.index = -1;\n\n\t// Indicates whether the {@link Token//EOF} token has been fetched from\n\t// {@link //tokenSource} and added to {@link //tokens}. This field improves\n\t// performance for the following cases:\n\t//\n\t// <ul>\n\t// <li>{@link //consume}: The lookahead check in {@link //consume} to\n\t// prevent\n\t// consuming the EOF symbol is optimized by checking the values of\n\t// {@link //fetchedEOF} and {@link //p} instead of calling {@link\n\t// //LA}.</li>\n\t// <li>{@link //fetch}: The check to prevent adding multiple EOF symbols\n\t// into\n\t// {@link //tokens} is trivial with this field.</li>\n\t// <ul>\n\tthis.fetchedEOF = false;\n\treturn this;\n}\n\nBufferedTokenStream.prototype = Object.create(TokenStream.prototype);\nBufferedTokenStream.prototype.constructor = BufferedTokenStream;\n\nBufferedTokenStream.prototype.mark = function() {\n\treturn 0;\n};\n\nBufferedTokenStream.prototype.release = function(marker) {\n\t// no resources to release\n};\n\nBufferedTokenStream.prototype.reset = function() {\n\tthis.seek(0);\n};\n\nBufferedTokenStream.prototype.seek = function(index) {\n\tthis.lazyInit();\n\tthis.index = this.adjustSeekIndex(index);\n};\n\nBufferedTokenStream.prototype.get = function(index) {\n\tthis.lazyInit();\n\treturn this.tokens[index];\n};\n\nBufferedTokenStream.prototype.consume = function() {\n\tvar skipEofCheck = false;\n\tif (this.index >= 0) {\n\t\tif (this.fetchedEOF) {\n\t\t\t// the last token in tokens is EOF. skip check if p indexes any\n\t\t\t// fetched token except the last.\n\t\t\tskipEofCheck = this.index < this.tokens.length - 1;\n\t\t} else {\n\t\t\t// no EOF token in tokens. skip check if p indexes a fetched token.\n\t\t\tskipEofCheck = this.index < this.tokens.length;\n\t\t}\n\t} else {\n\t\t// not yet initialized\n\t\tskipEofCheck = false;\n\t}\n\tif (!skipEofCheck && this.LA(1) === Token.EOF) {\n\t\tthrow \"cannot consume EOF\";\n\t}\n\tif (this.sync(this.index + 1)) {\n\t\tthis.index = this.adjustSeekIndex(this.index + 1);\n\t}\n};\n\n// Make sure index {@code i} in tokens has a token.\n//\n// @return {@code true} if a token is located at index {@code i}, otherwise\n// {@code false}.\n// @see //get(int i)\n// /\nBufferedTokenStream.prototype.sync = function(i) {\n\tvar n = i - this.tokens.length + 1; // how many more elements we need?\n\tif (n > 0) {\n\t\tvar fetched = this.fetch(n);\n\t\treturn fetched >= n;\n\t}\n\treturn true;\n};\n\n// Add {@code n} elements to buffer.\n//\n// @return The actual number of elements added to the buffer.\n// /\nBufferedTokenStream.prototype.fetch = function(n) {\n\tif (this.fetchedEOF) {\n\t\treturn 0;\n\t}\n\tfor (var i = 0; i < n; i++) {\n\t\tvar t = this.tokenSource.nextToken();\n\t\tt.tokenIndex = this.tokens.length;\n\t\tthis.tokens.push(t);\n\t\tif (t.type === Token.EOF) {\n\t\t\tthis.fetchedEOF = true;\n\t\t\treturn i + 1;\n\t\t}\n\t}\n\treturn n;\n};\n\n// Get all tokens from start..stop inclusively///\nBufferedTokenStream.prototype.getTokens = function(start, stop, types) {\n\tif (types === undefined) {\n\t\ttypes = null;\n\t}\n\tif (start < 0 || stop < 0) {\n\t\treturn null;\n\t}\n\tthis.lazyInit();\n\tvar subset = [];\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tfor (var i = start; i < stop; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\tif (types === null || types.contains(t.type)) {\n\t\t\tsubset.push(t);\n\t\t}\n\t}\n\treturn subset;\n};\n\nBufferedTokenStream.prototype.LA = function(i) {\n\treturn this.LT(i).type;\n};\n\nBufferedTokenStream.prototype.LB = function(k) {\n\tif (this.index - k < 0) {\n\t\treturn null;\n\t}\n\treturn this.tokens[this.index - k];\n};\n\nBufferedTokenStream.prototype.LT = function(k) {\n\tthis.lazyInit();\n\tif (k === 0) {\n\t\treturn null;\n\t}\n\tif (k < 0) {\n\t\treturn this.LB(-k);\n\t}\n\tvar i = this.index + k - 1;\n\tthis.sync(i);\n\tif (i >= this.tokens.length) { // return EOF token\n\t\t// EOF must be last token\n\t\treturn this.tokens[this.tokens.length - 1];\n\t}\n\treturn this.tokens[i];\n};\n\n// Allowed derived classes to modify the behavior of operations which change\n// the current stream position by adjusting the target token index of a seek\n// operation. The default implementation simply returns {@code i}. If an\n// exception is thrown in this method, the current stream index should not be\n// changed.\n//\n// <p>For example, {@link CommonTokenStream} overrides this method to ensure\n// that\n// the seek target is always an on-channel token.</p>\n//\n// @param i The target token index.\n// @return The adjusted target token index.\n\nBufferedTokenStream.prototype.adjustSeekIndex = function(i) {\n\treturn i;\n};\n\nBufferedTokenStream.prototype.lazyInit = function() {\n\tif (this.index === -1) {\n\t\tthis.setup();\n\t}\n};\n\nBufferedTokenStream.prototype.setup = function() {\n\tthis.sync(0);\n\tthis.index = this.adjustSeekIndex(0);\n};\n\n// Reset this token stream by setting its token source.///\nBufferedTokenStream.prototype.setTokenSource = function(tokenSource) {\n\tthis.tokenSource = tokenSource;\n\tthis.tokens = [];\n\tthis.index = -1;\n\tthis.fetchedEOF = false;\n};\n\n\n// Given a starting index, return the index of the next token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and EOF.\n// /\nBufferedTokenStream.prototype.nextTokenOnChannel = function(i, channel) {\n\tthis.sync(i);\n\tif (i >= this.tokens.length) {\n\t\treturn -1;\n\t}\n\tvar token = this.tokens[i];\n\twhile (token.channel !== this.channel) {\n\t\tif (token.type === Token.EOF) {\n\t\t\treturn -1;\n\t\t}\n\t\ti += 1;\n\t\tthis.sync(i);\n\t\ttoken = this.tokens[i];\n\t}\n\treturn i;\n};\n\n// Given a starting index, return the index of the previous token on channel.\n// Return i if tokens[i] is on channel. Return -1 if there are no tokens\n// on channel between i and 0.\nBufferedTokenStream.prototype.previousTokenOnChannel = function(i, channel) {\n\twhile (i >= 0 && this.tokens[i].channel !== channel) {\n\t\ti -= 1;\n\t}\n\treturn i;\n};\n\n// Collect all tokens on specified channel to the right of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL or\n// EOF. If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToRight = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar nextOnChannel = this.nextTokenOnChannel(tokenIndex + 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tvar from_ = tokenIndex + 1;\n\t// if none onchannel to right, nextOnChannel=-1 so set to = last token\n\tvar to = nextOnChannel === -1 ? this.tokens.length - 1 : nextOnChannel;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\n// Collect all tokens on specified channel to the left of\n// the current token up until we see a token on DEFAULT_TOKEN_CHANNEL.\n// If channel is -1, find any non default channel token.\nBufferedTokenStream.prototype.getHiddenTokensToLeft = function(tokenIndex,\n\t\tchannel) {\n\tif (channel === undefined) {\n\t\tchannel = -1;\n\t}\n\tthis.lazyInit();\n\tif (tokenIndex < 0 || tokenIndex >= this.tokens.length) {\n\t\tthrow \"\" + tokenIndex + \" not in 0..\" + this.tokens.length - 1;\n\t}\n\tvar prevOnChannel = this.previousTokenOnChannel(tokenIndex - 1, Lexer.DEFAULT_TOKEN_CHANNEL);\n\tif (prevOnChannel === tokenIndex - 1) {\n\t\treturn null;\n\t}\n\t// if none on channel to left, prevOnChannel=-1 then from=0\n\tvar from_ = prevOnChannel + 1;\n\tvar to = tokenIndex - 1;\n\treturn this.filterForChannel(from_, to, channel);\n};\n\nBufferedTokenStream.prototype.filterForChannel = function(left, right, channel) {\n\tvar hidden = [];\n\tfor (var i = left; i < right + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (channel === -1) {\n\t\t\tif (t.channel !== Lexer.DEFAULT_TOKEN_CHANNEL) {\n\t\t\t\thidden.push(t);\n\t\t\t}\n\t\t} else if (t.channel === channel) {\n\t\t\thidden.push(t);\n\t\t}\n\t}\n\tif (hidden.length === 0) {\n\t\treturn null;\n\t}\n\treturn hidden;\n};\n\nBufferedTokenStream.prototype.getSourceName = function() {\n\treturn this.tokenSource.getSourceName();\n};\n\n// Get the text of all tokens in this buffer.///\nBufferedTokenStream.prototype.getText = function(interval) {\n\tthis.lazyInit();\n\tthis.fill();\n\tif (interval === undefined || interval === null) {\n\t\tinterval = new Interval(0, this.tokens.length - 1);\n\t}\n\tvar start = interval.start;\n\tif (start instanceof Token) {\n\t\tstart = start.tokenIndex;\n\t}\n\tvar stop = interval.stop;\n\tif (stop instanceof Token) {\n\t\tstop = stop.tokenIndex;\n\t}\n\tif (start === null || stop === null || start < 0 || stop < 0) {\n\t\treturn \"\";\n\t}\n\tif (stop >= this.tokens.length) {\n\t\tstop = this.tokens.length - 1;\n\t}\n\tvar s = \"\";\n\tfor (var i = start; i < stop + 1; i++) {\n\t\tvar t = this.tokens[i];\n\t\tif (t.type === Token.EOF) {\n\t\t\tbreak;\n\t\t}\n\t\ts = s + t.text;\n\t}\n\treturn s;\n};\n\n// Get all tokens from lexer until EOF///\nBufferedTokenStream.prototype.fill = function() {\n\tthis.lazyInit();\n\twhile (this.fetch(1000) === 1000) {\n\t\tcontinue;\n\t}\n};\n\nexports.BufferedTokenStream = BufferedTokenStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar InputStream = require('./InputStream').InputStream;\n\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\n// Utility functions to create InputStreams from various sources.\n//\n// All returned InputStreams support the full range of Unicode\n// up to U+10FFFF (the default behavior of InputStream only supports\n// code points up to U+FFFF).\nvar CharStreams = {\n // Creates an InputStream from a string.\n fromString: function(str) {\n return new InputStream(str, true);\n },\n\n // Asynchronously creates an InputStream from a blob given the\n // encoding of the bytes in that blob (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes onLoad(result) on success, onError(error) on\n // failure.\n fromBlob: function(blob, encoding, onLoad, onError) {\n var reader = FileReader();\n reader.onload = function(e) {\n var is = new InputStream(e.target.result, true);\n onLoad(is);\n };\n reader.onerror = onError;\n reader.readAsText(blob, encoding);\n },\n\n // Creates an InputStream from a Buffer given the\n // encoding of the bytes in that buffer (defaults to 'utf8' if\n // encoding is null).\n fromBuffer: function(buffer, encoding) {\n return new InputStream(buffer.toString(encoding), true);\n },\n\n // Asynchronously creates an InputStream from a file on disk given\n // the encoding of the bytes in that file (defaults to 'utf8' if\n // encoding is null).\n //\n // Invokes callback(error, result) on completion.\n fromPath: function(path, encoding, callback) {\n fs.readFile(path, encoding, function(err, data) {\n var is = null;\n if (data !== null) {\n is = new InputStream(data, true);\n }\n callback(err, is);\n });\n },\n\n // Synchronously creates an InputStream given a path to a file\n // on disk and the encoding of the bytes in that file (defaults to\n // 'utf8' if encoding is null).\n fromPathSync: function(path, encoding) {\n var data = fs.readFileSync(path, encoding);\n return new InputStream(data, true);\n }\n};\n\nexports.CharStreams = CharStreams;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This default implementation of {@link TokenFactory} creates\n// {@link CommonToken} objects.\n//\n\nvar CommonToken = require('./Token').CommonToken;\n\nfunction TokenFactory() {\n\treturn this;\n}\n\nfunction CommonTokenFactory(copyText) {\n\tTokenFactory.call(this);\n // Indicates whether {@link CommonToken//setText} should be called after\n // constructing tokens to explicitly set the text. This is useful for cases\n // where the input stream might not be able to provide arbitrary substrings\n // of text from the input after the lexer creates a token (e.g. the\n // implementation of {@link CharStream//getText} in\n // {@link UnbufferedCharStream} throws an\n // {@link UnsupportedOperationException}). Explicitly setting the token text\n // allows {@link Token//getText} to be called at any time regardless of the\n // input stream implementation.\n //\n // <p>\n // The default value is {@code false} to avoid the performance and memory\n // overhead of copying text for every token unless explicitly requested.</p>\n //\n this.copyText = copyText===undefined ? false : copyText;\n\treturn this;\n}\n\nCommonTokenFactory.prototype = Object.create(TokenFactory.prototype);\nCommonTokenFactory.prototype.constructor = CommonTokenFactory;\n\n//\n// The default {@link CommonTokenFactory} instance.\n//\n// <p>\n// This token factory does not explicitly copy token text when constructing\n// tokens.</p>\n//\nCommonTokenFactory.DEFAULT = new CommonTokenFactory();\n\nCommonTokenFactory.prototype.create = function(source, type, text, channel, start, stop, line, column) {\n var t = new CommonToken(source, type, channel, start, stop);\n t.line = line;\n t.column = column;\n if (text !==null) {\n t.text = text;\n } else if (this.copyText && source[1] !==null) {\n t.text = source[1].getText(start,stop);\n }\n return t;\n};\n\nCommonTokenFactory.prototype.createThin = function(type, text) {\n var t = new CommonToken(null, type);\n t.text = text;\n return t;\n};\n\nexports.CommonTokenFactory = CommonTokenFactory;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n//\n// This class extends {@link BufferedTokenStream} with functionality to filter\n// token streams to tokens on a particular channel (tokens where\n// {@link Token//getChannel} returns a particular value).\n//\n// <p>\n// This token stream provides access to all tokens by index or when calling\n// methods like {@link //getText}. The channel filtering is only used for code\n// accessing tokens via the lookahead methods {@link //LA}, {@link //LT}, and\n// {@link //LB}.</p>\n//\n// <p>\n// By default, tokens are placed on the default channel\n// ({@link Token//DEFAULT_CHANNEL}), but may be reassigned by using the\n// {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to\n// call {@link Lexer//setChannel}.\n// </p>\n//\n// <p>\n// Note: lexer rules which use the {@code ->skip} lexer command or call\n// {@link Lexer//skip} do not produce tokens at all, so input text matched by\n// such a rule will not be available as part of the token stream, regardless of\n// channel.</p>\n///\n\nvar Token = require('./Token').Token;\nvar BufferedTokenStream = require('./BufferedTokenStream').BufferedTokenStream;\n\nfunction CommonTokenStream(lexer, channel) {\n\tBufferedTokenStream.call(this, lexer);\n this.channel = channel===undefined ? Token.DEFAULT_CHANNEL : channel;\n return this;\n}\n\nCommonTokenStream.prototype = Object.create(BufferedTokenStream.prototype);\nCommonTokenStream.prototype.constructor = CommonTokenStream;\n\nCommonTokenStream.prototype.adjustSeekIndex = function(i) {\n return this.nextTokenOnChannel(i, this.channel);\n};\n\nCommonTokenStream.prototype.LB = function(k) {\n if (k===0 || this.index-k<0) {\n return null;\n }\n var i = this.index;\n var n = 1;\n // find k good tokens looking backwards\n while (n <= k) {\n // skip off-channel tokens\n i = this.previousTokenOnChannel(i - 1, this.channel);\n n += 1;\n }\n if (i < 0) {\n return null;\n }\n return this.tokens[i];\n};\n\nCommonTokenStream.prototype.LT = function(k) {\n this.lazyInit();\n if (k === 0) {\n return null;\n }\n if (k < 0) {\n return this.LB(-k);\n }\n var i = this.index;\n var n = 1; // we know tokens[pos] is a good one\n // find k good tokens\n while (n < k) {\n // skip off-channel tokens, but make sure to not look past EOF\n if (this.sync(i + 1)) {\n i = this.nextTokenOnChannel(i + 1, this.channel);\n }\n n += 1;\n }\n return this.tokens[i];\n};\n\n// Count EOF just once.///\nCommonTokenStream.prototype.getNumberOfOnChannelTokens = function() {\n var n = 0;\n this.fill();\n for (var i =0; i< this.tokens.length;i++) {\n var t = this.tokens[i];\n if( t.channel===this.channel) {\n n += 1;\n }\n if( t.type===Token.EOF) {\n break;\n }\n }\n return n;\n};\n\nexports.CommonTokenStream = CommonTokenStream;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This is an InputStream that is loaded from a file all at once\n// when you construct the object.\n//\nvar InputStream = require('./InputStream').InputStream;\nvar isNodeJs = typeof window === 'undefined' && typeof importScripts === 'undefined';\nvar fs = isNodeJs ? require(\"fs\") : null;\n\nfunction FileStream(fileName, decodeToUnicodeCodePoints) {\n\tvar data = fs.readFileSync(fileName, \"utf8\");\n\tInputStream.call(this, data, decodeToUnicodeCodePoints);\n\tthis.fileName = fileName;\n\treturn this;\n}\n\nFileStream.prototype = Object.create(InputStream.prototype);\nFileStream.prototype.constructor = FileStream;\n\nexports.FileStream = FileStream;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nrequire('./polyfills/codepointat');\nrequire('./polyfills/fromcodepoint');\n\n// Vacuum all input from a string and then treat it like a buffer.\n\nfunction _loadString(stream) {\n\tstream._index = 0;\n\tstream.data = [];\n\tif (stream.decodeToUnicodeCodePoints) {\n\t\tfor (var i = 0; i < stream.strdata.length; ) {\n\t\t\tvar codePoint = stream.strdata.codePointAt(i);\n\t\t\tstream.data.push(codePoint);\n\t\t\ti += codePoint <= 0xFFFF ? 1 : 2;\n\t\t}\n\t} else {\n\t\tfor (var i = 0; i < stream.strdata.length; i++) {\n\t\t\tvar codeUnit = stream.strdata.charCodeAt(i);\n\t\t\tstream.data.push(codeUnit);\n\t\t}\n\t}\n\tstream._size = stream.data.length;\n}\n\n// If decodeToUnicodeCodePoints is true, the input is treated\n// as a series of Unicode code points.\n//\n// Otherwise, the input is treated as a series of 16-bit UTF-16 code\n// units.\nfunction InputStream(data, decodeToUnicodeCodePoints) {\n\tthis.name = \"<empty>\";\n\tthis.strdata = data;\n\tthis.decodeToUnicodeCodePoints = decodeToUnicodeCodePoints || false;\n\t_loadString(this);\n\treturn this;\n}\n\nObject.defineProperty(InputStream.prototype, \"index\", {\n\tget : function() {\n\t\treturn this._index;\n\t}\n});\n\nObject.defineProperty(InputStream.prototype, \"size\", {\n\tget : function() {\n\t\treturn this._size;\n\t}\n});\n\n// Reset the stream so that it's in the same state it was\n// when the object was created *except* the data array is not\n// touched.\n//\nInputStream.prototype.reset = function() {\n\tthis._index = 0;\n};\n\nInputStream.prototype.consume = function() {\n\tif (this._index >= this._size) {\n\t\t// assert this.LA(1) == Token.EOF\n\t\tthrow (\"cannot consume EOF\");\n\t}\n\tthis._index += 1;\n};\n\nInputStream.prototype.LA = function(offset) {\n\tif (offset === 0) {\n\t\treturn 0; // undefined\n\t}\n\tif (offset < 0) {\n\t\toffset += 1; // e.g., translate LA(-1) to use offset=0\n\t}\n\tvar pos = this._index + offset - 1;\n\tif (pos < 0 || pos >= this._size) { // invalid\n\t\treturn Token.EOF;\n\t}\n\treturn this.data[pos];\n};\n\nInputStream.prototype.LT = function(offset) {\n\treturn this.LA(offset);\n};\n\n// mark/release do nothing; we have entire buffer\nInputStream.prototype.mark = function() {\n\treturn -1;\n};\n\nInputStream.prototype.release = function(marker) {\n};\n\n// consume() ahead until p==_index; can't just set p=_index as we must\n// update line and column. If we seek backwards, just set p\n//\nInputStream.prototype.seek = function(_index) {\n\tif (_index <= this._index) {\n\t\tthis._index = _index; // just jump; don't update stream state (line,\n\t\t\t\t\t\t\t\t// ...)\n\t\treturn;\n\t}\n\t// seek forward\n\tthis._index = Math.min(_index, this._size);\n};\n\nInputStream.prototype.getText = function(start, stop) {\n\tif (stop >= this._size) {\n\t\tstop = this._size - 1;\n\t}\n\tif (start >= this._size) {\n\t\treturn \"\";\n\t} else {\n\t\tif (this.decodeToUnicodeCodePoints) {\n\t\t\tvar result = \"\";\n\t\t\tfor (var i = start; i <= stop; i++) {\n\t\t\t\tresult += String.fromCodePoint(this.data[i]);\n\t\t\t}\n\t\t\treturn result;\n\t\t} else {\n\t\t\treturn this.strdata.slice(start, stop + 1);\n\t\t}\n\t}\n};\n\nInputStream.prototype.toString = function() {\n\treturn this.strdata;\n};\n\nexports.InputStream = InputStream;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n/*jslint smarttabs:true */\n\nvar Token = require('./Token').Token;\n\n/* stop is not included! */\nfunction Interval(start, stop) {\n\tthis.start = start;\n\tthis.stop = stop;\n\treturn this;\n}\n\nInterval.prototype.contains = function(item) {\n\treturn item >= this.start && item < this.stop;\n};\n\nInterval.prototype.toString = function() {\n\tif(this.start===this.stop-1) {\n\t\treturn this.start.toString();\n\t} else {\n\t\treturn this.start.toString() + \"..\" + (this.stop-1).toString();\n\t}\n};\n\n\nObject.defineProperty(Interval.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.stop - this.start;\n\t}\n});\n\nfunction IntervalSet() {\n\tthis.intervals = null;\n\tthis.readOnly = false;\n}\n\nIntervalSet.prototype.first = function(v) {\n\tif (this.intervals === null || this.intervals.length===0) {\n\t\treturn Token.INVALID_TYPE;\n\t} else {\n\t\treturn this.intervals[0].start;\n\t}\n};\n\nIntervalSet.prototype.addOne = function(v) {\n\tthis.addInterval(new Interval(v, v + 1));\n};\n\nIntervalSet.prototype.addRange = function(l, h) {\n\tthis.addInterval(new Interval(l, h + 1));\n};\n\nIntervalSet.prototype.addInterval = function(v) {\n\tif (this.intervals === null) {\n\t\tthis.intervals = [];\n\t\tthis.intervals.push(v);\n\t} else {\n\t\t// find insert pos\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// distinct range -> insert\n\t\t\tif (v.stop < i.start) {\n\t\t\t\tthis.intervals.splice(k, 0, v);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// contiguous range -> adjust\n\t\t\telse if (v.stop === i.start) {\n\t\t\t\tthis.intervals[k].start = v.start;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// overlapping range -> adjust and reduce\n\t\t\telse if (v.start <= i.stop) {\n\t\t\t\tthis.intervals[k] = new Interval(Math.min(i.start, v.start), Math.max(i.stop, v.stop));\n\t\t\t\tthis.reduce(k);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// greater than any existing\n\t\tthis.intervals.push(v);\n\t}\n};\n\nIntervalSet.prototype.addSet = function(other) {\n\tif (other.intervals !== null) {\n\t\tfor (var k = 0; k < other.intervals.length; k++) {\n\t\t\tvar i = other.intervals[k];\n\t\t\tthis.addInterval(new Interval(i.start, i.stop));\n\t\t}\n\t}\n\treturn this;\n};\n\nIntervalSet.prototype.reduce = function(k) {\n\t// only need to reduce if k is not the last\n\tif (k < this.intervalslength - 1) {\n\t\tvar l = this.intervals[k];\n\t\tvar r = this.intervals[k + 1];\n\t\t// if r contained in l\n\t\tif (l.stop >= r.stop) {\n\t\t\tthis.intervals.pop(k + 1);\n\t\t\tthis.reduce(k);\n\t\t} else if (l.stop >= r.start) {\n\t\t\tthis.intervals[k] = new Interval(l.start, r.stop);\n\t\t\tthis.intervals.pop(k + 1);\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.complement = function(start, stop) {\n var result = new IntervalSet();\n result.addInterval(new Interval(start,stop+1));\n for(var i=0; i<this.intervals.length; i++) {\n result.removeRange(this.intervals[i]);\n }\n return result;\n};\n\nIntervalSet.prototype.contains = function(item) {\n\tif (this.intervals === null) {\n\t\treturn false;\n\t} else {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tif(this.intervals[k].contains(item)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n};\n\nObject.defineProperty(IntervalSet.prototype, \"length\", {\n\tget : function() {\n\t\tvar len = 0;\n\t\tthis.intervals.map(function(i) {len += i.length;});\n\t\treturn len;\n\t}\n});\n\nIntervalSet.prototype.removeRange = function(v) {\n if(v.start===v.stop-1) {\n this.removeOne(v.start);\n } else if (this.intervals!==null) {\n var k = 0;\n for(var n=0; n<this.intervals.length; n++) {\n var i = this.intervals[k];\n // intervals are ordered\n if (v.stop<=i.start) {\n return;\n }\n // check for including range, split it\n else if(v.start>i.start && v.stop<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n var x = new Interval(v.stop, i.stop);\n this.intervals.splice(k, 0, x);\n return;\n }\n // check for included range, remove it\n else if(v.start<=i.start && v.stop>=i.stop) {\n this.intervals.splice(k, 1);\n k = k - 1; // need another pass\n }\n // check for lower boundary\n else if(v.start<i.stop) {\n this.intervals[k] = new Interval(i.start, v.start);\n }\n // check for upper boundary\n else if(v.stop<i.stop) {\n this.intervals[k] = new Interval(v.stop, i.stop);\n }\n k += 1;\n }\n }\n};\n\nIntervalSet.prototype.removeOne = function(v) {\n\tif (this.intervals !== null) {\n\t\tfor (var k = 0; k < this.intervals.length; k++) {\n\t\t\tvar i = this.intervals[k];\n\t\t\t// intervals is ordered\n\t\t\tif (v < i.start) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for single value range\n\t\t\telse if (v === i.start && v === i.stop - 1) {\n\t\t\t\tthis.intervals.splice(k, 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for lower boundary\n\t\t\telse if (v === i.start) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start + 1, i.stop);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// check for upper boundary\n\t\t\telse if (v === i.stop - 1) {\n\t\t\t\tthis.intervals[k] = new Interval(i.start, i.stop - 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// split existing range\n\t\t\telse if (v < i.stop - 1) {\n\t\t\t\tvar x = new Interval(i.start, v);\n\t\t\t\ti.start = v + 1;\n\t\t\t\tthis.intervals.splice(k, 0, x);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nIntervalSet.prototype.toString = function(literalNames, symbolicNames, elemsAreChar) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\telemsAreChar = elemsAreChar || false;\n\tif (this.intervals === null) {\n\t\treturn \"{}\";\n\t} else if(literalNames!==null || symbolicNames!==null) {\n\t\treturn this.toTokenString(literalNames, symbolicNames);\n\t} else if(elemsAreChar) {\n\t\treturn this.toCharString();\n\t} else {\n\t\treturn this.toIndexString();\n\t}\n};\n\nIntervalSet.prototype.toCharString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'\");\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(\"'\" + String.fromCharCode(v.start) + \"'..'\" + String.fromCharCode(v.stop-1) + \"'\");\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toIndexString = function() {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tif(v.stop===v.start+1) {\n\t\t\tif ( v.start===Token.EOF ) {\n\t\t\t\tnames.push(\"<EOF>\");\n\t\t\t} else {\n\t\t\t\tnames.push(v.start.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tnames.push(v.start.toString() + \"..\" + (v.stop-1).toString());\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\n\nIntervalSet.prototype.toTokenString = function(literalNames, symbolicNames) {\n\tvar names = [];\n\tfor (var i = 0; i < this.intervals.length; i++) {\n\t\tvar v = this.intervals[i];\n\t\tfor (var j = v.start; j < v.stop; j++) {\n\t\t\tnames.push(this.elementName(literalNames, symbolicNames, j));\n\t\t}\n\t}\n\tif (names.length > 1) {\n\t\treturn \"{\" + names.join(\", \") + \"}\";\n\t} else {\n\t\treturn names[0];\n\t}\n};\n\nIntervalSet.prototype.elementName = function(literalNames, symbolicNames, a) {\n\tif (a === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (a === Token.EPSILON) {\n\t\treturn \"<EPSILON>\";\n\t} else {\n\t\treturn literalNames[a] || symbolicNames[a];\n\t}\n};\n\nexports.Interval = Interval;\nexports.IntervalSet = IntervalSet;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar Set = require('./Utils').Set;\nvar BitSet = require('./Utils').BitSet;\nvar Token = require('./Token').Token;\nvar ATNConfig = require('./atn/ATNConfig').ATNConfig;\nvar Interval = require('./IntervalSet').Interval;\nvar IntervalSet = require('./IntervalSet').IntervalSet;\nvar RuleStopState = require('./atn/ATNState').RuleStopState;\nvar RuleTransition = require('./atn/Transition').RuleTransition;\nvar NotSetTransition = require('./atn/Transition').NotSetTransition;\nvar WildcardTransition = require('./atn/Transition').WildcardTransition;\nvar AbstractPredicateTransition = require('./atn/Transition').AbstractPredicateTransition;\n\nvar pc = require('./PredictionContext');\nvar predictionContextFromRuleContext = pc.predictionContextFromRuleContext;\nvar PredictionContext = pc.PredictionContext;\nvar SingletonPredictionContext = pc.SingletonPredictionContext;\n\nfunction LL1Analyzer (atn) {\n this.atn = atn;\n}\n\n//* Special value added to the lookahead sets to indicate that we hit\n// a predicate during analysis if {@code seeThruPreds==false}.\n///\nLL1Analyzer.HIT_PRED = Token.INVALID_TYPE;\n\n\n//*\n// Calculates the SLL(1) expected lookahead set for each outgoing transition\n// of an {@link ATNState}. The returned array has one element for each\n// outgoing transition in {@code s}. If the closure from transition\n// <em>i</em> leads to a semantic predicate before matching a symbol, the\n// element at index <em>i</em> of the result will be {@code null}.\n//\n// @param s the ATN state\n// @return the expected symbols for each outgoing transition of {@code s}.\n///\nLL1Analyzer.prototype.getDecisionLookahead = function(s) {\n if (s === null) {\n return null;\n }\n var count = s.transitions.length;\n var look = [];\n for(var alt=0; alt< count; alt++) {\n look[alt] = new IntervalSet();\n var lookBusy = new Set();\n var seeThruPreds = false; // fail to get lookahead upon pred\n this._LOOK(s.transition(alt).target, null, PredictionContext.EMPTY,\n look[alt], lookBusy, new BitSet(), seeThruPreds, false);\n // Wipe out lookahead for this alternative if we found nothing\n // or we had a predicate when we !seeThruPreds\n if (look[alt].length===0 || look[alt].contains(LL1Analyzer.HIT_PRED)) {\n look[alt] = null;\n }\n }\n return look;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and the end of the rule containing\n// {@code s} is reached, {@link Token//EPSILON} is added to the result set.\n// If {@code ctx} is not {@code null} and the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx the complete parser context, or {@code null} if the context\n// should be ignored\n//\n// @return The set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n///\nLL1Analyzer.prototype.LOOK = function(s, stopState, ctx) {\n var r = new IntervalSet();\n var seeThruPreds = true; // ignore preds; get all lookahead\n\tctx = ctx || null;\n var lookContext = ctx!==null ? predictionContextFromRuleContext(s.atn, ctx) : null;\n this._LOOK(s, stopState, lookContext, r, new Set(), new BitSet(), seeThruPreds, true);\n return r;\n};\n\n//*\n// Compute set of tokens that can follow {@code s} in the ATN in the\n// specified {@code ctx}.\n//\n// <p>If {@code ctx} is {@code null} and {@code stopState} or the end of the\n// rule containing {@code s} is reached, {@link Token//EPSILON} is added to\n// the result set. If {@code ctx} is not {@code null} and {@code addEOF} is\n// {@code true} and {@code stopState} or the end of the outermost rule is\n// reached, {@link Token//EOF} is added to the result set.</p>\n//\n// @param s the ATN state.\n// @param stopState the ATN state to stop at. This can be a\n// {@link BlockEndState} to detect epsilon paths through a closure.\n// @param ctx The outer context, or {@code null} if the outer context should\n// not be used.\n// @param look The result lookahead set.\n// @param lookBusy A set used for preventing epsilon closures in the ATN\n// from causing a stack overflow. Outside code should pass\n// {@code new Set<ATNConfig>} for this argument.\n// @param calledRuleStack A set used for preventing left recursion in the\n// ATN from causing a stack overflow. Outside code should pass\n// {@code new BitSet()} for this argument.\n// @param seeThruPreds {@code true} to true semantic predicates as\n// implicitly {@code true} and \"see through them\", otherwise {@code false}\n// to treat semantic predicates as opaque and add {@link //HIT_PRED} to the\n// result if one is encountered.\n// @param addEOF Add {@link Token//EOF} to the result if the end of the\n// outermost context is reached. This parameter has no effect if {@code ctx}\n// is {@code null}.\n///\nLL1Analyzer.prototype._LOOK = function(s, stopState , ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF) {\n var c = new ATNConfig({state:s, alt:0, context: ctx}, null);\n if (lookBusy.contains(c)) {\n return;\n }\n lookBusy.add(c);\n if (s === stopState) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n }\n if (s instanceof RuleStopState ) {\n if (ctx ===null) {\n look.addOne(Token.EPSILON);\n return;\n } else if (ctx.isEmpty() && addEOF) {\n look.addOne(Token.EOF);\n return;\n }\n if (ctx !== PredictionContext.EMPTY) {\n // run thru all possible stack tops in ctx\n for(var i=0; i<ctx.length; i++) {\n var returnState = this.atn.states[ctx.getReturnState(i)];\n var removed = calledRuleStack.contains(returnState.ruleIndex);\n try {\n calledRuleStack.remove(returnState.ruleIndex);\n this._LOOK(returnState, stopState, ctx.getParent(i), look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n if (removed) {\n calledRuleStack.add(returnState.ruleIndex);\n }\n }\n }\n return;\n }\n }\n for(var j=0; j<s.transitions.length; j++) {\n var t = s.transitions[j];\n if (t.constructor === RuleTransition) {\n if (calledRuleStack.contains(t.target.ruleIndex)) {\n continue;\n }\n var newContext = SingletonPredictionContext.create(ctx, t.followState.stateNumber);\n try {\n calledRuleStack.add(t.target.ruleIndex);\n this._LOOK(t.target, stopState, newContext, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } finally {\n calledRuleStack.remove(t.target.ruleIndex);\n }\n } else if (t instanceof AbstractPredicateTransition ) {\n if (seeThruPreds) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else {\n look.addOne(LL1Analyzer.HIT_PRED);\n }\n } else if( t.isEpsilon) {\n this._LOOK(t.target, stopState, ctx, look, lookBusy, calledRuleStack, seeThruPreds, addEOF);\n } else if (t.constructor === WildcardTransition) {\n look.addRange( Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType );\n } else {\n var set = t.label;\n if (set !== null) {\n if (t instanceof NotSetTransition) {\n set = set.complement(Token.MIN_USER_TOKEN_TYPE, this.atn.maxTokenType);\n }\n look.addSet(set);\n }\n }\n }\n};\n\nexports.LL1Analyzer = LL1Analyzer;\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A lexer is recognizer that draws input symbols from a character stream.\n// lexer grammars result in a subclass of this object. A Lexer object\n// uses simplified match() and error recovery mechanisms in the interest of speed.\n\nvar Token = require('./Token').Token;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar CommonTokenFactory = require('./CommonTokenFactory').CommonTokenFactory;\nvar RecognitionException = require('./error/Errors').RecognitionException;\nvar LexerNoViableAltException = require('./error/Errors').LexerNoViableAltException;\n\nfunction TokenSource() {\n\treturn this;\n}\n\nfunction Lexer(input) {\n\tRecognizer.call(this);\n\tthis._input = input;\n\tthis._factory = CommonTokenFactory.DEFAULT;\n\tthis._tokenFactorySourcePair = [ this, input ];\n\n\tthis._interp = null; // child classes must populate this\n\n\t// The goal of all lexer rules/methods is to create a token object.\n\t// this is an instance variable as multiple rules may collaborate to\n\t// create a single token. nextToken will return this object after\n\t// matching lexer rule(s). If you subclass to allow multiple token\n\t// emissions, then set this to the last token to be matched or\n\t// something nonnull so that the auto token emit mechanism will not\n\t// emit another token.\n\tthis._token = null;\n\n\t// What character index in the stream did the current token start at?\n\t// Needed, for example, to get the text for current token. Set at\n\t// the start of nextToken.\n\tthis._tokenStartCharIndex = -1;\n\n\t// The line on which the first character of the token resides///\n\tthis._tokenStartLine = -1;\n\n\t// The character position of first character within the line///\n\tthis._tokenStartColumn = -1;\n\n\t// Once we see EOF on char stream, next token will be EOF.\n\t// If you have DONE : EOF ; then you see DONE EOF.\n\tthis._hitEOF = false;\n\n\t// The channel number for the current token///\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\n\t// The token type for the current token///\n\tthis._type = Token.INVALID_TYPE;\n\n\tthis._modeStack = [];\n\tthis._mode = Lexer.DEFAULT_MODE;\n\n\t// You can set the text for the current token to override what is in\n\t// the input char buffer. Use setText() or can set this instance var.\n\t// /\n\tthis._text = null;\n\n\treturn this;\n}\n\nLexer.prototype = Object.create(Recognizer.prototype);\nLexer.prototype.constructor = Lexer;\n\nLexer.DEFAULT_MODE = 0;\nLexer.MORE = -2;\nLexer.SKIP = -3;\n\nLexer.DEFAULT_TOKEN_CHANNEL = Token.DEFAULT_CHANNEL;\nLexer.HIDDEN = Token.HIDDEN_CHANNEL;\nLexer.MIN_CHAR_VALUE = 0x0000;\nLexer.MAX_CHAR_VALUE = 0x10FFFF;\n\nLexer.prototype.reset = function() {\n\t// wack Lexer state variables\n\tif (this._input !== null) {\n\t\tthis._input.seek(0); // rewind the input\n\t}\n\tthis._token = null;\n\tthis._type = Token.INVALID_TYPE;\n\tthis._channel = Token.DEFAULT_CHANNEL;\n\tthis._tokenStartCharIndex = -1;\n\tthis._tokenStartColumn = -1;\n\tthis._tokenStartLine = -1;\n\tthis._text = null;\n\n\tthis._hitEOF = false;\n\tthis._mode = Lexer.DEFAULT_MODE;\n\tthis._modeStack = [];\n\n\tthis._interp.reset();\n};\n\n// Return a token from this source; i.e., match a token on the char stream.\nLexer.prototype.nextToken = function() {\n\tif (this._input === null) {\n\t\tthrow \"nextToken requires a non-null input stream.\";\n\t}\n\n\t// Mark start location in char stream so unbuffered streams are\n\t// guaranteed at least have text of current token\n\tvar tokenStartMarker = this._input.mark();\n\ttry {\n\t\twhile (true) {\n\t\t\tif (this._hitEOF) {\n\t\t\t\tthis.emitEOF();\n\t\t\t\treturn this._token;\n\t\t\t}\n\t\t\tthis._token = null;\n\t\t\tthis._channel = Token.DEFAULT_CHANNEL;\n\t\t\tthis._tokenStartCharIndex = this._input.index;\n\t\t\tthis._tokenStartColumn = this._interp.column;\n\t\t\tthis._tokenStartLine = this._interp.line;\n\t\t\tthis._text = null;\n\t\t\tvar continueOuter = false;\n\t\t\twhile (true) {\n\t\t\t\tthis._type = Token.INVALID_TYPE;\n\t\t\t\tvar ttype = Lexer.SKIP;\n\t\t\t\ttry {\n\t\t\t\t\tttype = this._interp.match(this._input, this._mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t if(e instanceof RecognitionException) {\n this.notifyListeners(e); // report error\n this.recover(e);\n } else {\n console.log(e.stack);\n throw e;\n }\n\t\t\t\t}\n\t\t\t\tif (this._input.LA(1) === Token.EOF) {\n\t\t\t\t\tthis._hitEOF = true;\n\t\t\t\t}\n\t\t\t\tif (this._type === Token.INVALID_TYPE) {\n\t\t\t\t\tthis._type = ttype;\n\t\t\t\t}\n\t\t\t\tif (this._type === Lexer.SKIP) {\n\t\t\t\t\tcontinueOuter = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (this._type !== Lexer.MORE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (continueOuter) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._token === null) {\n\t\t\t\tthis.emit();\n\t\t\t}\n\t\t\treturn this._token;\n\t\t}\n\t} finally {\n\t\t// make sure we release marker after match or\n\t\t// unbuffered char stream will keep buffering\n\t\tthis._input.release(tokenStartMarker);\n\t}\n};\n\n// Instruct the lexer to skip creating a token for current lexer rule\n// and look for another token. nextToken() knows to keep looking when\n// a lexer rule finishes with token set to SKIP_TOKEN. Recall that\n// if token==null at end of any token rule, it creates one for you\n// and emits it.\n// /\nLexer.prototype.skip = function() {\n\tthis._type = Lexer.SKIP;\n};\n\nLexer.prototype.more = function() {\n\tthis._type = Lexer.MORE;\n};\n\nLexer.prototype.mode = function(m) {\n\tthis._mode = m;\n};\n\nLexer.prototype.pushMode = function(m) {\n\tif (this._interp.debug) {\n\t\tconsole.log(\"pushMode \" + m);\n\t}\n\tthis._modeStack.push(this._mode);\n\tthis.mode(m);\n};\n\nLexer.prototype.popMode = function() {\n\tif (this._modeStack.length === 0) {\n\t\tthrow \"Empty Stack\";\n\t}\n\tif (this._interp.debug) {\n\t\tconsole.log(\"popMode back to \" + this._modeStack.slice(0, -1));\n\t}\n\tthis.mode(this._modeStack.pop());\n\treturn this._mode;\n};\n\n// Set the char stream and reset the lexer\nObject.defineProperty(Lexer.prototype, \"inputStream\", {\n\tget : function() {\n\t\treturn this._input;\n\t},\n\tset : function(input) {\n\t\tthis._input = null;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t\tthis.reset();\n\t\tthis._input = input;\n\t\tthis._tokenFactorySourcePair = [ this, this._input ];\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"sourceName\", {\n\tget : function sourceName() {\n\t\treturn this._input.sourceName;\n\t}\n});\n\n// By default does not support multiple emits per nextToken invocation\n// for efficiency reasons. Subclass and override this method, nextToken,\n// and getToken (to push tokens into a list and pull from that list\n// rather than a single variable as this implementation does).\n// /\nLexer.prototype.emitToken = function(token) {\n\tthis._token = token;\n};\n\n// The standard method called to automatically emit a token at the\n// outermost lexical rule. The token object should point into the\n// char buffer start..stop. If there is a text override in 'text',\n// use that to set the token's text. Override this method to emit\n// custom Token objects or provide a new factory.\n// /\nLexer.prototype.emit = function() {\n\tvar t = this._factory.create(this._tokenFactorySourcePair, this._type,\n\t\t\tthis._text, this._channel, this._tokenStartCharIndex, this\n\t\t\t\t\t.getCharIndex() - 1, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn);\n\tthis.emitToken(t);\n\treturn t;\n};\n\nLexer.prototype.emitEOF = function() {\n\tvar cpos = this.column;\n\tvar lpos = this.line;\n\tvar eof = this._factory.create(this._tokenFactorySourcePair, Token.EOF,\n\t\t\tnull, Token.DEFAULT_CHANNEL, this._input.index,\n\t\t\tthis._input.index - 1, lpos, cpos);\n\tthis.emitToken(eof);\n\treturn eof;\n};\n\nObject.defineProperty(Lexer.prototype, \"type\", {\n\tget : function() {\n\t\treturn this.type;\n\t},\n\tset : function(type) {\n\t\tthis._type = type;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"line\", {\n\tget : function() {\n\t\treturn this._interp.line;\n\t},\n\tset : function(line) {\n\t\tthis._interp.line = line;\n\t}\n});\n\nObject.defineProperty(Lexer.prototype, \"column\", {\n\tget : function() {\n\t\treturn this._interp.column;\n\t},\n\tset : function(column) {\n\t\tthis._interp.column = column;\n\t}\n});\n\n\n// What is the index of the current character of lookahead?///\nLexer.prototype.getCharIndex = function() {\n\treturn this._input.index;\n};\n\n// Return the text matched so far for the current token or any text override.\n//Set the complete text of this token; it wipes any previous changes to the text.\nObject.defineProperty(Lexer.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t} else {\n\t\t\treturn this._interp.getText(this._input);\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n// Return a list of all Token objects in input char stream.\n// Forces load of all tokens. Does not include EOF token.\n// /\nLexer.prototype.getAllTokens = function() {\n\tvar tokens = [];\n\tvar t = this.nextToken();\n\twhile (t.type !== Token.EOF) {\n\t\ttokens.push(t);\n\t\tt = this.nextToken();\n\t}\n\treturn tokens;\n};\n\nLexer.prototype.notifyListeners = function(e) {\n\tvar start = this._tokenStartCharIndex;\n\tvar stop = this._input.index;\n\tvar text = this._input.getText(start, stop);\n\tvar msg = \"token recognition error at: '\" + this.getErrorDisplay(text) + \"'\";\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, null, this._tokenStartLine,\n\t\t\tthis._tokenStartColumn, msg, e);\n};\n\nLexer.prototype.getErrorDisplay = function(s) {\n\tvar d = [];\n\tfor (var i = 0; i < s.length; i++) {\n\t\td.push(s[i]);\n\t}\n\treturn d.join('');\n};\n\nLexer.prototype.getErrorDisplayForChar = function(c) {\n\tif (c.charCodeAt(0) === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else if (c === '\\n') {\n\t\treturn \"\\\\n\";\n\t} else if (c === '\\t') {\n\t\treturn \"\\\\t\";\n\t} else if (c === '\\r') {\n\t\treturn \"\\\\r\";\n\t} else {\n\t\treturn c;\n\t}\n};\n\nLexer.prototype.getCharErrorDisplay = function(c) {\n\treturn \"'\" + this.getErrorDisplayForChar(c) + \"'\";\n};\n\n// Lexers can normally match any char in it's vocabulary after matching\n// a token, so do the easy thing and just kill a character and hope\n// it all works out. You can instead use the rule invocation stack\n// to do sophisticated error recovery if you are in a fragment rule.\n// /\nLexer.prototype.recover = function(re) {\n\tif (this._input.LA(1) !== Token.EOF) {\n\t\tif (re instanceof LexerNoViableAltException) {\n\t\t\t// skip a char and try again\n\t\t\tthis._interp.consume(this._input);\n\t\t} else {\n\t\t\t// TODO: Do we lose character or line position information?\n\t\t\tthis._input.consume();\n\t\t}\n\t}\n};\n\nexports.Lexer = Lexer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./Token').Token;\nvar ParseTreeListener = require('./tree/Tree').ParseTreeListener;\nvar Recognizer = require('./Recognizer').Recognizer;\nvar DefaultErrorStrategy = require('./error/ErrorStrategy').DefaultErrorStrategy;\nvar ATNDeserializer = require('./atn/ATNDeserializer').ATNDeserializer;\nvar ATNDeserializationOptions = require('./atn/ATNDeserializationOptions').ATNDeserializationOptions;\nvar TerminalNode = require('./tree/Tree').TerminalNode;\nvar ErrorNode = require('./tree/Tree').ErrorNode;\n\nfunction TraceListener(parser) {\n\tParseTreeListener.call(this);\n this.parser = parser;\n\treturn this;\n}\n\nTraceListener.prototype = Object.create(ParseTreeListener.prototype);\nTraceListener.prototype.constructor = TraceListener;\n\nTraceListener.prototype.enterEveryRule = function(ctx) {\n\tconsole.log(\"enter \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\nTraceListener.prototype.visitTerminal = function( node) {\n\tconsole.log(\"consume \" + node.symbol + \" rule \" + this.parser.ruleNames[this.parser._ctx.ruleIndex]);\n};\n\nTraceListener.prototype.exitEveryRule = function(ctx) {\n\tconsole.log(\"exit \" + this.parser.ruleNames[ctx.ruleIndex] + \", LT(1)=\" + this.parser._input.LT(1).text);\n};\n\n// this is all the parsing support code essentially; most of it is error\n// recovery stuff.//\nfunction Parser(input) {\n\tRecognizer.call(this);\n\t// The input stream.\n\tthis._input = null;\n\t// The error handling strategy for the parser. The default value is a new\n\t// instance of {@link DefaultErrorStrategy}.\n\tthis._errHandler = new DefaultErrorStrategy();\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\t// The {@link ParserRuleContext} object for the currently executing rule.\n\t// this is always non-null during the parsing process.\n\tthis._ctx = null;\n\t// Specifies whether or not the parser should construct a parse tree during\n\t// the parsing process. The default value is {@code true}.\n\tthis.buildParseTrees = true;\n\t// When {@link //setTrace}{@code (true)} is called, a reference to the\n\t// {@link TraceListener} is stored here so it can be easily removed in a\n\t// later call to {@link //setTrace}{@code (false)}. The listener itself is\n\t// implemented as a parser listener so this field is not directly used by\n\t// other parser methods.\n\tthis._tracer = null;\n\t// The list of {@link ParseTreeListener} listeners registered to receive\n\t// events during the parse.\n\tthis._parseListeners = null;\n\t// The number of syntax errors reported during parsing. this value is\n\t// incremented each time {@link //notifyErrorListeners} is called.\n\tthis._syntaxErrors = 0;\n\tthis.setInputStream(input);\n\treturn this;\n}\n\nParser.prototype = Object.create(Recognizer.prototype);\nParser.prototype.contructor = Parser;\n\n// this field maps from the serialized ATN string to the deserialized {@link\n// ATN} with\n// bypass alternatives.\n//\n// @see ATNDeserializationOptions//isGenerateRuleBypassTransitions()\n//\nParser.bypassAltsAtnCache = {};\n\n// reset the parser's state//\nParser.prototype.reset = function() {\n\tif (this._input !== null) {\n\t\tthis._input.seek(0);\n\t}\n\tthis._errHandler.reset(this);\n\tthis._ctx = null;\n\tthis._syntaxErrors = 0;\n\tthis.setTrace(false);\n\tthis._precedenceStack = [];\n\tthis._precedenceStack.push(0);\n\tif (this._interp !== null) {\n\t\tthis._interp.reset();\n\t}\n};\n\n// Match current input symbol against {@code ttype}. If the symbol type\n// matches, {@link ANTLRErrorStrategy//reportMatch} and {@link //consume} are\n// called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @param ttype the token type to match\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// {@code ttype} and the error strategy could not recover from the\n// mismatched symbol\n\nParser.prototype.match = function(ttype) {\n\tvar t = this.getCurrentToken();\n\tif (t.type === ttype) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this.buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n// Match current input symbol as a wildcard. If the symbol type matches\n// (i.e. has a value greater than 0), {@link ANTLRErrorStrategy//reportMatch}\n// and {@link //consume} are called to complete the match process.\n//\n// <p>If the symbol type does not match,\n// {@link ANTLRErrorStrategy//recoverInline} is called on the current error\n// strategy to attempt recovery. If {@link //getBuildParseTree} is\n// {@code true} and the token index of the symbol returned by\n// {@link ANTLRErrorStrategy//recoverInline} is -1, the symbol is added to\n// the parse tree by calling {@link ParserRuleContext//addErrorNode}.</p>\n//\n// @return the matched symbol\n// @throws RecognitionException if the current input symbol did not match\n// a wildcard and the error strategy could not recover from the mismatched\n// symbol\n\nParser.prototype.matchWildcard = function() {\n\tvar t = this.getCurrentToken();\n\tif (t.type > 0) {\n\t\tthis._errHandler.reportMatch(this);\n\t\tthis.consume();\n\t} else {\n\t\tt = this._errHandler.recoverInline(this);\n\t\tif (this._buildParseTrees && t.tokenIndex === -1) {\n\t\t\t// we must have conjured up a new token during single token\n\t\t\t// insertion\n\t\t\t// if it's not the current symbol\n\t\t\tthis._ctx.addErrorNode(t);\n\t\t}\n\t}\n\treturn t;\n};\n\nParser.prototype.getParseListeners = function() {\n\treturn this._parseListeners || [];\n};\n\n// Registers {@code listener} to receive events during the parsing process.\n//\n// <p>To support output-preserving grammar transformations (including but not\n// limited to left-recursion removal, automated left-factoring, and\n// optimized code generation), calls to listener methods during the parse\n// may differ substantially from calls made by\n// {@link ParseTreeWalker//DEFAULT} used after the parse is complete. In\n// particular, rule entry and exit events may occur in a different order\n// during the parse than after the parser. In addition, calls to certain\n// rule entry methods may be omitted.</p>\n//\n// <p>With the following specific exceptions, calls to listener events are\n// <em>deterministic</em>, i.e. for identical input the calls to listener\n// methods will be the same.</p>\n//\n// <ul>\n// <li>Alterations to the grammar used to generate code may change the\n// behavior of the listener calls.</li>\n// <li>Alterations to the command line options passed to ANTLR 4 when\n// generating the parser may change the behavior of the listener calls.</li>\n// <li>Changing the version of the ANTLR Tool used to generate the parser\n// may change the behavior of the listener calls.</li>\n// </ul>\n//\n// @param listener the listener to add\n//\n// @throws NullPointerException if {@code} listener is {@code null}\n//\nParser.prototype.addParseListener = function(listener) {\n\tif (listener === null) {\n\t\tthrow \"listener\";\n\t}\n\tif (this._parseListeners === null) {\n\t\tthis._parseListeners = [];\n\t}\n\tthis._parseListeners.push(listener);\n};\n\n//\n// Remove {@code listener} from the list of parse listeners.\n//\n// <p>If {@code listener} is {@code null} or has not been added as a parse\n// listener, this method does nothing.</p>\n// @param listener the listener to remove\n//\nParser.prototype.removeParseListener = function(listener) {\n\tif (this._parseListeners !== null) {\n\t\tvar idx = this._parseListeners.indexOf(listener);\n\t\tif (idx >= 0) {\n\t\t\tthis._parseListeners.splice(idx, 1);\n\t\t}\n\t\tif (this._parseListeners.length === 0) {\n\t\t\tthis._parseListeners = null;\n\t\t}\n\t}\n};\n\n// Remove all parse listeners.\nParser.prototype.removeParseListeners = function() {\n\tthis._parseListeners = null;\n};\n\n// Notify any parse listeners of an enter rule event.\nParser.prototype.triggerEnterRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n var ctx = this._ctx;\n\t\tthis._parseListeners.map(function(listener) {\n\t\t\tlistener.enterEveryRule(ctx);\n\t\t\tctx.enterRule(listener);\n\t\t});\n\t}\n};\n\n//\n// Notify any parse listeners of an exit rule event.\n//\n// @see //addParseListener\n//\nParser.prototype.triggerExitRuleEvent = function() {\n\tif (this._parseListeners !== null) {\n\t\t// reverse order walk of listeners\n var ctx = this._ctx;\n\t\tthis._parseListeners.slice(0).reverse().map(function(listener) {\n\t\t\tctx.exitRule(listener);\n\t\t\tlistener.exitEveryRule(ctx);\n\t\t});\n\t}\n};\n\nParser.prototype.getTokenFactory = function() {\n\treturn this._input.tokenSource._factory;\n};\n\n// Tell our token source and error strategy about a new way to create tokens.//\nParser.prototype.setTokenFactory = function(factory) {\n\tthis._input.tokenSource._factory = factory;\n};\n\n// The ATN with bypass alternatives is expensive to create so we create it\n// lazily.\n//\n// @throws UnsupportedOperationException if the current parser does not\n// implement the {@link //getSerializedATN()} method.\n//\nParser.prototype.getATNWithBypassAlts = function() {\n\tvar serializedAtn = this.getSerializedATN();\n\tif (serializedAtn === null) {\n\t\tthrow \"The current parser does not support an ATN with bypass alternatives.\";\n\t}\n\tvar result = this.bypassAltsAtnCache[serializedAtn];\n\tif (result === null) {\n\t\tvar deserializationOptions = new ATNDeserializationOptions();\n\t\tdeserializationOptions.generateRuleBypassTransitions = true;\n\t\tresult = new ATNDeserializer(deserializationOptions)\n\t\t\t\t.deserialize(serializedAtn);\n\t\tthis.bypassAltsAtnCache[serializedAtn] = result;\n\t}\n\treturn result;\n};\n\n// The preferred method of getting a tree pattern. For example, here's a\n// sample use:\n//\n// <pre>\n// ParseTree t = parser.expr();\n// ParseTreePattern p = parser.compileParseTreePattern(\"<ID>+0\",\n// MyParser.RULE_expr);\n// ParseTreeMatch m = p.match(t);\n// String id = m.get(\"ID\");\n// </pre>\n\nvar Lexer = require('./Lexer').Lexer;\n\nParser.prototype.compileParseTreePattern = function(pattern, patternRuleIndex, lexer) {\n\tlexer = lexer || null;\n\tif (lexer === null) {\n\t\tif (this.getTokenStream() !== null) {\n\t\t\tvar tokenSource = this.getTokenStream().tokenSource;\n\t\t\tif (tokenSource instanceof Lexer) {\n\t\t\t\tlexer = tokenSource;\n\t\t\t}\n\t\t}\n\t}\n\tif (lexer === null) {\n\t\tthrow \"Parser can't discover a lexer to use\";\n\t}\n\tvar m = new ParseTreePatternMatcher(lexer, this);\n\treturn m.compile(pattern, patternRuleIndex);\n};\n\nParser.prototype.getInputStream = function() {\n\treturn this.getTokenStream();\n};\n\nParser.prototype.setInputStream = function(input) {\n\tthis.setTokenStream(input);\n};\n\nParser.prototype.getTokenStream = function() {\n\treturn this._input;\n};\n\n// Set the token stream and reset the parser.//\nParser.prototype.setTokenStream = function(input) {\n\tthis._input = null;\n\tthis.reset();\n\tthis._input = input;\n};\n\n// Match needs to return the current input symbol, which gets put\n// into the label for the associated token ref; e.g., x=ID.\n//\nParser.prototype.getCurrentToken = function() {\n\treturn this._input.LT(1);\n};\n\nParser.prototype.notifyErrorListeners = function(msg, offendingToken, err) {\n\toffendingToken = offendingToken || null;\n\terr = err || null;\n\tif (offendingToken === null) {\n\t\toffendingToken = this.getCurrentToken();\n\t}\n\tthis._syntaxErrors += 1;\n\tvar line = offendingToken.line;\n\tvar column = offendingToken.column;\n\tvar listener = this.getErrorListenerDispatch();\n\tlistener.syntaxError(this, offendingToken, line, column, msg, err);\n};\n\n//\n// Consume and return the {@linkplain //getCurrentToken current symbol}.\n//\n// <p>E.g., given the following input with {@code A} being the current\n// lookahead symbol, this function moves the cursor to {@code B} and returns\n// {@code A}.</p>\n//\n// <pre>\n// A B\n// ^\n// </pre>\n//\n// If the parser is not in error recovery mode, the consumed symbol is added\n// to the parse tree using {@link ParserRuleContext//addChild(Token)}, and\n// {@link ParseTreeListener//visitTerminal} is called on any parse listeners.\n// If the parser <em>is</em> in error recovery mode, the consumed symbol is\n// added to the parse tree using\n// {@link ParserRuleContext//addErrorNode(Token)}, and\n// {@link ParseTreeListener//visitErrorNode} is called on any parse\n// listeners.\n//\nParser.prototype.consume = function() {\n\tvar o = this.getCurrentToken();\n\tif (o.type !== Token.EOF) {\n\t\tthis.getInputStream().consume();\n\t}\n\tvar hasListener = this._parseListeners !== null && this._parseListeners.length > 0;\n\tif (this.buildParseTrees || hasListener) {\n\t\tvar node;\n\t\tif (this._errHandler.inErrorRecoveryMode(this)) {\n\t\t\tnode = this._ctx.addErrorNode(o);\n\t\t} else {\n\t\t\tnode = this._ctx.addTokenNode(o);\n\t\t}\n node.invokingState = this.state;\n\t\tif (hasListener) {\n\t\t\tthis._parseListeners.map(function(listener) {\n\t\t\t\tif (node instanceof ErrorNode || (node.isErrorNode !== undefined && node.isErrorNode())) {\n\t\t\t\t\tlistener.visitErrorNode(node);\n\t\t\t\t} else if (node instanceof TerminalNode) {\n\t\t\t\t\tlistener.visitTerminal(node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn o;\n};\n\nParser.prototype.addContextToParseTree = function() {\n\t// add current context to parent if we have a parent\n\tif (this._ctx.parentCtx !== null) {\n\t\tthis._ctx.parentCtx.addChild(this._ctx);\n\t}\n};\n\n// Always called by generated parsers upon entry to a rule. Access field\n// {@link //_ctx} get the current context.\n\nParser.prototype.enterRule = function(localctx, state, ruleIndex) {\n\tthis.state = state;\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this.buildParseTrees) {\n\t\tthis.addContextToParseTree();\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent();\n\t}\n};\n\nParser.prototype.exitRule = function() {\n\tthis._ctx.stop = this._input.LT(-1);\n\t// trigger event on _ctx, before it reverts to parent\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerExitRuleEvent();\n\t}\n\tthis.state = this._ctx.invokingState;\n\tthis._ctx = this._ctx.parentCtx;\n};\n\nParser.prototype.enterOuterAlt = function(localctx, altNum) {\n \tlocalctx.setAltNumber(altNum);\n\t// if we have new localctx, make sure we replace existing ctx\n\t// that is previous child of parse tree\n\tif (this.buildParseTrees && this._ctx !== localctx) {\n\t\tif (this._ctx.parentCtx !== null) {\n\t\t\tthis._ctx.parentCtx.removeLastChild();\n\t\t\tthis._ctx.parentCtx.addChild(localctx);\n\t\t}\n\t}\n\tthis._ctx = localctx;\n};\n\n// Get the precedence level for the top-most precedence rule.\n//\n// @return The precedence level for the top-most precedence rule, or -1 if\n// the parser context is not nested within a precedence rule.\n\nParser.prototype.getPrecedence = function() {\n\tif (this._precedenceStack.length === 0) {\n\t\treturn -1;\n\t} else {\n\t\treturn this._precedenceStack[this._precedenceStack.length-1];\n\t}\n};\n\nParser.prototype.enterRecursionRule = function(localctx, state, ruleIndex,\n\t\tprecedence) {\n\tthis.state = state;\n\tthis._precedenceStack.push(precedence);\n\tthis._ctx = localctx;\n\tthis._ctx.start = this._input.LT(1);\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\n//\n// Like {@link //enterRule} but for recursive rules.\n\nParser.prototype.pushNewRecursionContext = function(localctx, state, ruleIndex) {\n\tvar previous = this._ctx;\n\tprevious.parentCtx = localctx;\n\tprevious.invokingState = state;\n\tprevious.stop = this._input.LT(-1);\n\n\tthis._ctx = localctx;\n\tthis._ctx.start = previous.start;\n\tif (this.buildParseTrees) {\n\t\tthis._ctx.addChild(previous);\n\t}\n\tif (this._parseListeners !== null) {\n\t\tthis.triggerEnterRuleEvent(); // simulates rule entry for\n\t\t\t\t\t\t\t\t\t\t// left-recursive rules\n\t}\n};\n\nParser.prototype.unrollRecursionContexts = function(parentCtx) {\n\tthis._precedenceStack.pop();\n\tthis._ctx.stop = this._input.LT(-1);\n\tvar retCtx = this._ctx; // save current ctx (return value)\n\t// unroll so _ctx is as it was before call to recursive method\n\tif (this._parseListeners !== null) {\n\t\twhile (this._ctx !== parentCtx) {\n\t\t\tthis.triggerExitRuleEvent();\n\t\t\tthis._ctx = this._ctx.parentCtx;\n\t\t}\n\t} else {\n\t\tthis._ctx = parentCtx;\n\t}\n\t// hook into tree\n\tretCtx.parentCtx = parentCtx;\n\tif (this.buildParseTrees && parentCtx !== null) {\n\t\t// add return ctx into invoking rule's tree\n\t\tparentCtx.addChild(retCtx);\n\t}\n};\n\nParser.prototype.getInvokingContext = function(ruleIndex) {\n\tvar ctx = this._ctx;\n\twhile (ctx !== null) {\n\t\tif (ctx.ruleIndex === ruleIndex) {\n\t\t\treturn ctx;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\treturn null;\n};\n\nParser.prototype.precpred = function(localctx, precedence) {\n\treturn precedence >= this._precedenceStack[this._precedenceStack.length-1];\n};\n\nParser.prototype.inContext = function(context) {\n\t// TODO: useful in parser?\n\treturn false;\n};\n\n//\n// Checks whether or not {@code symbol} can follow the current state in the\n// ATN. The behavior of this method is equivalent to the following, but is\n// implemented such that the complete context-sensitive follow set does not\n// need to be explicitly constructed.\n//\n// <pre>\n// return getExpectedTokens().contains(symbol);\n// </pre>\n//\n// @param symbol the symbol type to check\n// @return {@code true} if {@code symbol} can follow the current state in\n// the ATN, otherwise {@code false}.\n\nParser.prototype.isExpectedToken = function(symbol) {\n\tvar atn = this._interp.atn;\n\tvar ctx = this._ctx;\n\tvar s = atn.states[this.state];\n\tvar following = atn.nextTokens(s);\n\tif (following.contains(symbol)) {\n\t\treturn true;\n\t}\n\tif (!following.contains(Token.EPSILON)) {\n\t\treturn false;\n\t}\n\twhile (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n\t\tvar invokingState = atn.states[ctx.invokingState];\n\t\tvar rt = invokingState.transitions[0];\n\t\tfollowing = atn.nextTokens(rt.followState);\n\t\tif (following.contains(symbol)) {\n\t\t\treturn true;\n\t\t}\n\t\tctx = ctx.parentCtx;\n\t}\n\tif (following.contains(Token.EPSILON) && symbol === Token.EOF) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n// Computes the set of input symbols which could follow the current parser\n// state and context, as given by {@link //getState} and {@link //getContext},\n// respectively.\n//\n// @see ATN//getExpectedTokens(int, RuleContext)\n//\nParser.prototype.getExpectedTokens = function() {\n\treturn this._interp.atn.getExpectedTokens(this.state, this._ctx);\n};\n\nParser.prototype.getExpectedTokensWithinCurrentRule = function() {\n\tvar atn = this._interp.atn;\n\tvar s = atn.states[this.state];\n\treturn atn.nextTokens(s);\n};\n\n// Get a rule's index (i.e., {@code RULE_ruleName} field) or -1 if not found.//\nParser.prototype.getRuleIndex = function(ruleName) {\n\tvar ruleIndex = this.getRuleIndexMap()[ruleName];\n\tif (ruleIndex !== null) {\n\t\treturn ruleIndex;\n\t} else {\n\t\treturn -1;\n\t}\n};\n\n// Return List<String> of the rule names in your parser instance\n// leading up to a call to the current rule. You could override if\n// you want more details such as the file/line info of where\n// in the ATN a rule is invoked.\n//\n// this is very useful for error messages.\n//\nParser.prototype.getRuleInvocationStack = function(p) {\n\tp = p || null;\n\tif (p === null) {\n\t\tp = this._ctx;\n\t}\n\tvar stack = [];\n\twhile (p !== null) {\n\t\t// compute what follows who invoked us\n\t\tvar ruleIndex = p.ruleIndex;\n\t\tif (ruleIndex < 0) {\n\t\t\tstack.push(\"n/a\");\n\t\t} else {\n\t\t\tstack.push(this.ruleNames[ruleIndex]);\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\treturn stack;\n};\n\n// For debugging and other purposes.//\nParser.prototype.getDFAStrings = function() {\n\treturn this._interp.decisionToDFA.toString();\n};\n// For debugging and other purposes.//\nParser.prototype.dumpDFA = function() {\n\tvar seenOne = false;\n\tfor (var i = 0; i < this._interp.decisionToDFA.length; i++) {\n\t\tvar dfa = this._interp.decisionToDFA[i];\n\t\tif (dfa.states.length > 0) {\n\t\t\tif (seenOne) {\n\t\t\t\tconsole.log();\n\t\t\t}\n\t\t\tthis.printer.println(\"Decision \" + dfa.decision + \":\");\n\t\t\tthis.printer.print(dfa.toString(this.literalNames, this.symbolicNames));\n\t\t\tseenOne = true;\n\t\t}\n\t}\n};\n\n/*\n\"\t\t\tprinter = function() {\\r\\n\" +\n\"\t\t\t\tthis.println = function(s) { document.getElementById('output') += s + '\\\\n'; }\\r\\n\" +\n\"\t\t\t\tthis.print = function(s) { document.getElementById('output') += s; }\\r\\n\" +\n\"\t\t\t};\\r\\n\" +\n*/\n\nParser.prototype.getSourceName = function() {\n\treturn this._input.sourceName;\n};\n\n// During a parse is sometimes useful to listen in on the rule entry and exit\n// events as well as token matches. this is for quick and dirty debugging.\n//\nParser.prototype.setTrace = function(trace) {\n\tif (!trace) {\n\t\tthis.removeParseListener(this._tracer);\n\t\tthis._tracer = null;\n\t} else {\n\t\tif (this._tracer !== null) {\n\t\t\tthis.removeParseListener(this._tracer);\n\t\t}\n\t\tthis._tracer = new TraceListener(this);\n\t\tthis.addParseListener(this._tracer);\n\t}\n};\n\nexports.Parser = Parser;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//* A rule invocation record for parsing.\n//\n// Contains all of the information about the current rule not stored in the\n// RuleContext. It handles parse tree children list, Any ATN state\n// tracing, and the default values available for rule indications:\n// start, stop, rule index, current alt number, current\n// ATN state.\n//\n// Subclasses made for each rule and grammar track the parameters,\n// return values, locals, and labels specific to that rule. These\n// are the objects that are returned from rules.\n//\n// Note text is not an actual field of a rule return value; it is computed\n// from start and stop using the input stream's toString() method. I\n// could add a ctor to this so that we can pass in and store the input\n// stream, but I'm not sure we want to do that. It would seem to be undefined\n// to get the .text property anyway if the rule matches tokens from multiple\n// input streams.\n//\n// I do not use getters for fields of objects that are used simply to\n// group values such as this aggregate. The getters/setters are there to\n// satisfy the superclass interface.\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Tree = require('./tree/Tree');\nvar INVALID_INTERVAL = Tree.INVALID_INTERVAL;\nvar TerminalNode = Tree.TerminalNode;\nvar TerminalNodeImpl = Tree.TerminalNodeImpl;\nvar ErrorNodeImpl = Tree.ErrorNodeImpl;\nvar Interval = require(\"./IntervalSet\").Interval;\n\nfunction ParserRuleContext(parent, invokingStateNumber) {\n\tparent = parent || null;\n\tinvokingStateNumber = invokingStateNumber || null;\n\tRuleContext.call(this, parent, invokingStateNumber);\n\tthis.ruleIndex = -1;\n // * If we are debugging or building a parse tree for a visitor,\n // we need to track all of the tokens and rule invocations associated\n // with this rule's context. This is empty for parsing w/o tree constr.\n // operation because we don't the need to track the details about\n // how we parse this rule.\n // /\n this.children = null;\n this.start = null;\n this.stop = null;\n // The exception that forced this rule to return. If the rule successfully\n // completed, this is {@code null}.\n this.exception = null;\n}\n\nParserRuleContext.prototype = Object.create(RuleContext.prototype);\nParserRuleContext.prototype.constructor = ParserRuleContext;\n\n// * COPY a ctx (I'm deliberately not using copy constructor)///\nParserRuleContext.prototype.copyFrom = function(ctx) {\n // from RuleContext\n this.parentCtx = ctx.parentCtx;\n this.invokingState = ctx.invokingState;\n this.children = null;\n this.start = ctx.start;\n this.stop = ctx.stop;\n // copy any error nodes to alt label node\n if(ctx.children) {\n this.children = [];\n // reset parent pointer for any error nodes\n \tctx.children.map(function(child) {\n \t\tif (child instanceof ErrorNodeImpl) {\n this.children.push(child);\n child.parentCtx = this;\n }\n\t\t}, this);\n\t}\n};\n\n// Double dispatch methods for listeners\nParserRuleContext.prototype.enterRule = function(listener) {\n};\n\nParserRuleContext.prototype.exitRule = function(listener) {\n};\n\n// * Does not set parent link; other add methods do that///\nParserRuleContext.prototype.addChild = function(child) {\n if (this.children === null) {\n this.children = [];\n }\n this.children.push(child);\n return child;\n};\n\n// * Used by enterOuterAlt to toss out a RuleContext previously added as\n// we entered a rule. If we have // label, we will need to remove\n// generic ruleContext object.\n// /\nParserRuleContext.prototype.removeLastChild = function() {\n if (this.children !== null) {\n this.children.pop();\n }\n};\n\nParserRuleContext.prototype.addTokenNode = function(token) {\n var node = new TerminalNodeImpl(token);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.addErrorNode = function(badToken) {\n var node = new ErrorNodeImpl(badToken);\n this.addChild(node);\n node.parentCtx = this;\n return node;\n};\n\nParserRuleContext.prototype.getChild = function(i, type) {\n\ttype = type || null;\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tif (type === null) {\n\t\treturn this.children[i];\n\t} else {\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif(child instanceof type) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n }\n};\n\n\nParserRuleContext.prototype.getToken = function(ttype, i) {\n\tif (this.children === null || i < 0 || i >= this.children.length) {\n\t\treturn null;\n\t}\n\tfor(var j=0; j<this.children.length; j++) {\n\t\tvar child = this.children[j];\n\t\tif (child instanceof TerminalNode) {\n\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\tif(i===0) {\n\t\t\t\t\treturn child;\n\t\t\t\t} else {\n\t\t\t\t\ti -= 1;\n\t\t\t\t}\n\t\t\t}\n }\n\t}\n return null;\n};\n\nParserRuleContext.prototype.getTokens = function(ttype ) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar tokens = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof TerminalNode) {\n\t\t\t\tif (child.symbol.type === ttype) {\n\t\t\t\t\ttokens.push(child);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn tokens;\n }\n};\n\nParserRuleContext.prototype.getTypedRuleContext = function(ctxType, i) {\n return this.getChild(i, ctxType);\n};\n\nParserRuleContext.prototype.getTypedRuleContexts = function(ctxType) {\n if (this.children=== null) {\n return [];\n } else {\n\t\tvar contexts = [];\n\t\tfor(var j=0; j<this.children.length; j++) {\n\t\t\tvar child = this.children[j];\n\t\t\tif (child instanceof ctxType) {\n\t\t\t\tcontexts.push(child);\n\t\t\t}\n\t\t}\n\t\treturn contexts;\n\t}\n};\n\nParserRuleContext.prototype.getChildCount = function() {\n\tif (this.children=== null) {\n\t\treturn 0;\n\t} else {\n\t\treturn this.children.length;\n\t}\n};\n\nParserRuleContext.prototype.getSourceInterval = function() {\n if( this.start === null || this.stop === null) {\n return INVALID_INTERVAL;\n } else {\n return new Interval(this.start.tokenIndex, this.stop.tokenIndex);\n }\n};\n\nRuleContext.EMPTY = new ParserRuleContext();\n\nfunction InterpreterRuleContext(parent, invokingStateNumber, ruleIndex) {\n\tParserRuleContext.call(parent, invokingStateNumber);\n this.ruleIndex = ruleIndex;\n return this;\n}\n\nInterpreterRuleContext.prototype = Object.create(ParserRuleContext.prototype);\nInterpreterRuleContext.prototype.constructor = InterpreterRuleContext;\n\nexports.ParserRuleContext = ParserRuleContext;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar RuleContext = require('./RuleContext').RuleContext;\nvar Hash = require('./Utils').Hash;\nvar Map = require('./Utils').Map;\n\nfunction PredictionContext(cachedHashCode) {\n\tthis.cachedHashCode = cachedHashCode;\n}\n\n// Represents {@code $} in local context prediction, which means wildcard.\n// {@code//+x =//}.\n// /\nPredictionContext.EMPTY = null;\n\n// Represents {@code $} in an array in full context mode, when {@code $}\n// doesn't mean wildcard: {@code $ + x = [$,x]}. Here,\n// {@code $} = {@link //EMPTY_RETURN_STATE}.\n// /\nPredictionContext.EMPTY_RETURN_STATE = 0x7FFFFFFF;\n\nPredictionContext.globalNodeCount = 1;\nPredictionContext.id = PredictionContext.globalNodeCount;\n\n// Stores the computed hash code of this {@link PredictionContext}. The hash\n// code is computed in parts to match the following reference algorithm.\n//\n// <pre>\n// private int referenceHashCode() {\n// int hash = {@link MurmurHash//initialize MurmurHash.initialize}({@link\n// //INITIAL_HASH});\n//\n// for (int i = 0; i < {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link //getParent\n// getParent}(i));\n// }\n//\n// for (int i = 0; i < {@link //size()}; i++) {\n// hash = {@link MurmurHash//update MurmurHash.update}(hash, {@link\n// //getReturnState getReturnState}(i));\n// }\n//\n// hash = {@link MurmurHash//finish MurmurHash.finish}(hash, 2// {@link\n// //size()});\n// return hash;\n// }\n// </pre>\n// /\n\n// This means only the {@link //EMPTY} context is in set.\nPredictionContext.prototype.isEmpty = function() {\n\treturn this === PredictionContext.EMPTY;\n};\n\nPredictionContext.prototype.hasEmptyPath = function() {\n\treturn this.getReturnState(this.length - 1) === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nPredictionContext.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\n\nPredictionContext.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n/*\nfunction calculateHashString(parent, returnState) {\n\treturn \"\" + parent + returnState;\n}\n*/\n\n// Used to cache {@link PredictionContext} objects. Its used for the shared\n// context cash associated with contexts in DFA states. This cache\n// can be used for both lexers and parsers.\n\nfunction PredictionContextCache() {\n\tthis.cache = new Map();\n\treturn this;\n}\n\n// Add a context to the cache and return it. If the context already exists,\n// return that one instead and do not add a new context to the cache.\n// Protect shared cache from unsafe thread access.\n//\nPredictionContextCache.prototype.add = function(ctx) {\n\tif (ctx === PredictionContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\tvar existing = this.cache.get(ctx) || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\tthis.cache.put(ctx, ctx);\n\treturn ctx;\n};\n\nPredictionContextCache.prototype.get = function(ctx) {\n\treturn this.cache.get(ctx) || null;\n};\n\nObject.defineProperty(PredictionContextCache.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.cache.length;\n\t}\n});\n\nfunction SingletonPredictionContext(parent, returnState) {\n\tvar hashCode = 0;\n\tvar hash = new Hash();\n\tif(parent !== null) {\n\t\thash.update(parent, returnState);\n\t} else {\n\t\thash.update(1);\n\t}\n\thashCode = hash.finish();\n\tPredictionContext.call(this, hashCode);\n\tthis.parentCtx = parent;\n\tthis.returnState = returnState;\n}\n\nSingletonPredictionContext.prototype = Object.create(PredictionContext.prototype);\nSingletonPredictionContext.prototype.contructor = SingletonPredictionContext;\n\nSingletonPredictionContext.create = function(parent, returnState) {\n\tif (returnState === PredictionContext.EMPTY_RETURN_STATE && parent === null) {\n\t\t// someone can pass in the bits of an array ctx that mean $\n\t\treturn PredictionContext.EMPTY;\n\t} else {\n\t\treturn new SingletonPredictionContext(parent, returnState);\n\t}\n};\n\nObject.defineProperty(SingletonPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn 1;\n\t}\n});\n\nSingletonPredictionContext.prototype.getParent = function(index) {\n\treturn this.parentCtx;\n};\n\nSingletonPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nSingletonPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof SingletonPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\tif(this.returnState !== other.returnState)\n return false;\n else if(this.parentCtx==null)\n return other.parentCtx==null\n\t\telse\n return this.parentCtx.equals(other.parentCtx);\n\t}\n};\n\nSingletonPredictionContext.prototype.toString = function() {\n\tvar up = this.parentCtx === null ? \"\" : this.parentCtx.toString();\n\tif (up.length === 0) {\n\t\tif (this.returnState === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\treturn \"$\";\n\t\t} else {\n\t\t\treturn \"\" + this.returnState;\n\t\t}\n\t} else {\n\t\treturn \"\" + this.returnState + \" \" + up;\n\t}\n};\n\nfunction EmptyPredictionContext() {\n\tSingletonPredictionContext.call(this, null, PredictionContext.EMPTY_RETURN_STATE);\n\treturn this;\n}\n\nEmptyPredictionContext.prototype = Object.create(SingletonPredictionContext.prototype);\nEmptyPredictionContext.prototype.constructor = EmptyPredictionContext;\n\nEmptyPredictionContext.prototype.isEmpty = function() {\n\treturn true;\n};\n\nEmptyPredictionContext.prototype.getParent = function(index) {\n\treturn null;\n};\n\nEmptyPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnState;\n};\n\nEmptyPredictionContext.prototype.equals = function(other) {\n\treturn this === other;\n};\n\nEmptyPredictionContext.prototype.toString = function() {\n\treturn \"$\";\n};\n\nPredictionContext.EMPTY = new EmptyPredictionContext();\n\nfunction ArrayPredictionContext(parents, returnStates) {\n\t// Parent can be null only if full ctx mode and we make an array\n\t// from {@link //EMPTY} and non-empty. We merge {@link //EMPTY} by using\n\t// null parent and\n\t// returnState == {@link //EMPTY_RETURN_STATE}.\n\tvar h = new Hash();\n\th.update(parents, returnStates);\n\tvar hashCode = h.finish();\n\tPredictionContext.call(this, hashCode);\n\tthis.parents = parents;\n\tthis.returnStates = returnStates;\n\treturn this;\n}\n\nArrayPredictionContext.prototype = Object.create(PredictionContext.prototype);\nArrayPredictionContext.prototype.constructor = ArrayPredictionContext;\n\nArrayPredictionContext.prototype.isEmpty = function() {\n\t// since EMPTY_RETURN_STATE can only appear in the last position, we\n\t// don't need to verify that size==1\n\treturn this.returnStates[0] === PredictionContext.EMPTY_RETURN_STATE;\n};\n\nObject.defineProperty(ArrayPredictionContext.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.returnStates.length;\n\t}\n});\n\nArrayPredictionContext.prototype.getParent = function(index) {\n\treturn this.parents[index];\n};\n\nArrayPredictionContext.prototype.getReturnState = function(index) {\n\treturn this.returnStates[index];\n};\n\nArrayPredictionContext.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof ArrayPredictionContext)) {\n\t\treturn false;\n\t} else if (this.hashCode() !== other.hashCode()) {\n\t\treturn false; // can't be same if hash is different\n\t} else {\n\t\treturn this.returnStates === other.returnStates &&\n\t\t\t\tthis.parents === other.parents;\n\t}\n};\n\nArrayPredictionContext.prototype.toString = function() {\n\tif (this.isEmpty()) {\n\t\treturn \"[]\";\n\t} else {\n\t\tvar s = \"[\";\n\t\tfor (var i = 0; i < this.returnStates.length; i++) {\n\t\t\tif (i > 0) {\n\t\t\t\ts = s + \", \";\n\t\t\t}\n\t\t\tif (this.returnStates[i] === PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\ts = s + \"$\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\ts = s + this.returnStates[i];\n\t\t\tif (this.parents[i] !== null) {\n\t\t\t\ts = s + \" \" + this.parents[i];\n\t\t\t} else {\n\t\t\t\ts = s + \"null\";\n\t\t\t}\n\t\t}\n\t\treturn s + \"]\";\n\t}\n};\n\n// Convert a {@link RuleContext} tree to a {@link PredictionContext} graph.\n// Return {@link //EMPTY} if {@code outerContext} is empty or null.\n// /\nfunction predictionContextFromRuleContext(atn, outerContext) {\n\tif (outerContext === undefined || outerContext === null) {\n\t\touterContext = RuleContext.EMPTY;\n\t}\n\t// if we are in RuleContext of start rule, s, then PredictionContext\n\t// is EMPTY. Nobody called us. (if we are empty, return empty)\n\tif (outerContext.parentCtx === null || outerContext === RuleContext.EMPTY) {\n\t\treturn PredictionContext.EMPTY;\n\t}\n\t// If we have a parent, convert it to a PredictionContext graph\n\tvar parent = predictionContextFromRuleContext(atn, outerContext.parentCtx);\n\tvar state = atn.states[outerContext.invokingState];\n\tvar transition = state.transitions[0];\n\treturn SingletonPredictionContext.create(parent, transition.followState.stateNumber);\n}\n/*\nfunction calculateListsHashString(parents, returnStates) {\n\tvar s = \"\";\n\tparents.map(function(p) {\n\t\ts = s + p;\n\t});\n\treturnStates.map(function(r) {\n\t\ts = s + r;\n\t});\n\treturn s;\n}\n*/\nfunction merge(a, b, rootIsWildcard, mergeCache) {\n\t// share same graph if both same\n\tif (a === b) {\n\t\treturn a;\n\t}\n\tif (a instanceof SingletonPredictionContext && b instanceof SingletonPredictionContext) {\n\t\treturn mergeSingletons(a, b, rootIsWildcard, mergeCache);\n\t}\n\t// At least one of a or b is array\n\t// If one is $ and rootIsWildcard, return $ as// wildcard\n\tif (rootIsWildcard) {\n\t\tif (a instanceof EmptyPredictionContext) {\n\t\t\treturn a;\n\t\t}\n\t\tif (b instanceof EmptyPredictionContext) {\n\t\t\treturn b;\n\t\t}\n\t}\n\t// convert singleton so both are arrays to normalize\n\tif (a instanceof SingletonPredictionContext) {\n\t\ta = new ArrayPredictionContext([a.getParent()], [a.returnState]);\n\t}\n\tif (b instanceof SingletonPredictionContext) {\n\t\tb = new ArrayPredictionContext([b.getParent()], [b.returnState]);\n\t}\n\treturn mergeArrays(a, b, rootIsWildcard, mergeCache);\n}\n\n//\n// Merge two {@link SingletonPredictionContext} instances.\n//\n// <p>Stack tops equal, parents merge is same; return left graph.<br>\n// <embed src=\"images/SingletonMerge_SameRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Same stack top, parents differ; merge parents giving array node, then\n// remainders of those graphs. A new root node is created to point to the\n// merged parents.<br>\n// <embed src=\"images/SingletonMerge_SameRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to same parent. Make array node for the\n// root where both element in the root point to the same (original)\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootSamePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Different stack tops pointing to different parents. Make array node for\n// the root where each element points to the corresponding original\n// parent.<br>\n// <embed src=\"images/SingletonMerge_DiffRootDiffPar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// @param mergeCache\n// /\nfunction mergeSingletons(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\n\tvar rootMerge = mergeRoot(a, b, rootIsWildcard);\n\tif (rootMerge !== null) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, rootMerge);\n\t\t}\n\t\treturn rootMerge;\n\t}\n\tif (a.returnState === b.returnState) {\n\t\tvar parent = merge(a.parentCtx, b.parentCtx, rootIsWildcard, mergeCache);\n\t\t// if parent is same as existing a or b parent or reduced to a parent,\n\t\t// return it\n\t\tif (parent === a.parentCtx) {\n\t\t\treturn a; // ax + bx = ax, if a=b\n\t\t}\n\t\tif (parent === b.parentCtx) {\n\t\t\treturn b; // ax + bx = bx, if a=b\n\t\t}\n\t\t// else: ax + ay = a'[x,y]\n\t\t// merge parents x and y, giving array node with x,y then remainders\n\t\t// of those graphs. dup a, a' points at merged array\n\t\t// new joined parent so create new singleton pointing to it, a'\n\t\tvar spc = SingletonPredictionContext.create(parent, a.returnState);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, spc);\n\t\t}\n\t\treturn spc;\n\t} else { // a != b payloads differ\n\t\t// see if we can collapse parents due to $+x parents if local ctx\n\t\tvar singleParent = null;\n\t\tif (a === b || (a.parentCtx !== null && a.parentCtx === b.parentCtx)) { // ax +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// bx =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// [a,b]x\n\t\t\tsingleParent = a.parentCtx;\n\t\t}\n\t\tif (singleParent !== null) { // parents are same\n\t\t\t// sort payloads and use same parent\n\t\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\t\tif (a.returnState > b.returnState) {\n\t\t\t\tpayloads[0] = b.returnState;\n\t\t\t\tpayloads[1] = a.returnState;\n\t\t\t}\n\t\t\tvar parents = [ singleParent, singleParent ];\n\t\t\tvar apc = new ArrayPredictionContext(parents, payloads);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, apc);\n\t\t\t}\n\t\t\treturn apc;\n\t\t}\n\t\t// parents differ and can't merge them. Just pack together\n\t\t// into array; can't merge.\n\t\t// ax + by = [ax,by]\n\t\tvar payloads = [ a.returnState, b.returnState ];\n\t\tvar parents = [ a.parentCtx, b.parentCtx ];\n\t\tif (a.returnState > b.returnState) { // sort by payload\n\t\t\tpayloads[0] = b.returnState;\n\t\t\tpayloads[1] = a.returnState;\n\t\t\tparents = [ b.parentCtx, a.parentCtx ];\n\t\t}\n\t\tvar a_ = new ArrayPredictionContext(parents, payloads);\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a_);\n\t\t}\n\t\treturn a_;\n\t}\n}\n\n//\n// Handle case where at least one of {@code a} or {@code b} is\n// {@link //EMPTY}. In the following diagrams, the symbol {@code $} is used\n// to represent {@link //EMPTY}.\n//\n// <h2>Local-Context Merges</h2>\n//\n// <p>These local-context merge operations are used when {@code rootIsWildcard}\n// is true.</p>\n//\n// <p>{@link //EMPTY} is superset of any graph; return {@link //EMPTY}.<br>\n// <embed src=\"images/LocalMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>{@link //EMPTY} and anything is {@code //EMPTY}, so merged parent is\n// {@code //EMPTY}; return left graph.<br>\n// <embed src=\"images/LocalMerge_EmptyParent.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Special case of last merge if local context.<br>\n// <embed src=\"images/LocalMerge_DiffRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <h2>Full-Context Merges</h2>\n//\n// <p>These full-context merge operations are used when {@code rootIsWildcard}\n// is false.</p>\n//\n// <p><embed src=\"images/FullMerge_EmptyRoots.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Must keep all contexts; {@link //EMPTY} in array is a special value (and\n// null parent).<br>\n// <embed src=\"images/FullMerge_EmptyRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p><embed src=\"images/FullMerge_SameRoot.svg\" type=\"image/svg+xml\"/></p>\n//\n// @param a the first {@link SingletonPredictionContext}\n// @param b the second {@link SingletonPredictionContext}\n// @param rootIsWildcard {@code true} if this is a local-context merge,\n// otherwise false to indicate a full-context merge\n// /\nfunction mergeRoot(a, b, rootIsWildcard) {\n\tif (rootIsWildcard) {\n\t\tif (a === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // // + b =//\n\t\t}\n\t\tif (b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // a +// =//\n\t\t}\n\t} else {\n\t\tif (a === PredictionContext.EMPTY && b === PredictionContext.EMPTY) {\n\t\t\treturn PredictionContext.EMPTY; // $ + $ = $\n\t\t} else if (a === PredictionContext.EMPTY) { // $ + x = [$,x]\n\t\t\tvar payloads = [ b.returnState,\n\t\t\t\t\tPredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ b.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t} else if (b === PredictionContext.EMPTY) { // x + $ = [$,x] ($ is always first if present)\n\t\t\tvar payloads = [ a.returnState, PredictionContext.EMPTY_RETURN_STATE ];\n\t\t\tvar parents = [ a.parentCtx, null ];\n\t\t\treturn new ArrayPredictionContext(parents, payloads);\n\t\t}\n\t}\n\treturn null;\n}\n\n//\n// Merge two {@link ArrayPredictionContext} instances.\n//\n// <p>Different tops, different parents.<br>\n// <embed src=\"images/ArrayMerge_DiffTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, same parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSamePar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, different parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopDiffPar.svg\" type=\"image/svg+xml\"/></p>\n//\n// <p>Shared top, all shared parents.<br>\n// <embed src=\"images/ArrayMerge_ShareTopSharePar.svg\"\n// type=\"image/svg+xml\"/></p>\n//\n// <p>Equal tops, merge parents and reduce top to\n// {@link SingletonPredictionContext}.<br>\n// <embed src=\"images/ArrayMerge_EqualTop.svg\" type=\"image/svg+xml\"/></p>\n// /\nfunction mergeArrays(a, b, rootIsWildcard, mergeCache) {\n\tif (mergeCache !== null) {\n\t\tvar previous = mergeCache.get(a, b);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t\tprevious = mergeCache.get(b, a);\n\t\tif (previous !== null) {\n\t\t\treturn previous;\n\t\t}\n\t}\n\t// merge sorted payloads a + b => M\n\tvar i = 0; // walks a\n\tvar j = 0; // walks b\n\tvar k = 0; // walks target M array\n\n\tvar mergedReturnStates = [];\n\tvar mergedParents = [];\n\t// walk and merge to yield mergedParents, mergedReturnStates\n\twhile (i < a.returnStates.length && j < b.returnStates.length) {\n\t\tvar a_parent = a.parents[i];\n\t\tvar b_parent = b.parents[j];\n\t\tif (a.returnStates[i] === b.returnStates[j]) {\n\t\t\t// same payload (stack tops are equal), must yield merged singleton\n\t\t\tvar payload = a.returnStates[i];\n\t\t\t// $+$ = $\n\t\t\tvar bothDollars = payload === PredictionContext.EMPTY_RETURN_STATE &&\n\t\t\t\t\ta_parent === null && b_parent === null;\n\t\t\tvar ax_ax = (a_parent !== null && b_parent !== null && a_parent === b_parent); // ax+ax\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ax\n\t\t\tif (bothDollars || ax_ax) {\n\t\t\t\tmergedParents[k] = a_parent; // choose left\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t} else { // ax+ay -> a'[x,y]\n\t\t\t\tvar mergedParent = merge(a_parent, b_parent, rootIsWildcard, mergeCache);\n\t\t\t\tmergedParents[k] = mergedParent;\n\t\t\t\tmergedReturnStates[k] = payload;\n\t\t\t}\n\t\t\ti += 1; // hop over left one as usual\n\t\t\tj += 1; // but also skip one in right side since we merge\n\t\t} else if (a.returnStates[i] < b.returnStates[j]) { // copy a[i] to M\n\t\t\tmergedParents[k] = a_parent;\n\t\t\tmergedReturnStates[k] = a.returnStates[i];\n\t\t\ti += 1;\n\t\t} else { // b > a, copy b[j] to M\n\t\t\tmergedParents[k] = b_parent;\n\t\t\tmergedReturnStates[k] = b.returnStates[j];\n\t\t\tj += 1;\n\t\t}\n\t\tk += 1;\n\t}\n\t// copy over any payloads remaining in either array\n\tif (i < a.returnStates.length) {\n\t\tfor (var p = i; p < a.returnStates.length; p++) {\n\t\t\tmergedParents[k] = a.parents[p];\n\t\t\tmergedReturnStates[k] = a.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t} else {\n\t\tfor (var p = j; p < b.returnStates.length; p++) {\n\t\t\tmergedParents[k] = b.parents[p];\n\t\t\tmergedReturnStates[k] = b.returnStates[p];\n\t\t\tk += 1;\n\t\t}\n\t}\n\t// trim merged if we combined a few that had same stack tops\n\tif (k < mergedParents.length) { // write index < last position; trim\n\t\tif (k === 1) { // for just one merged element, return singleton top\n\t\t\tvar a_ = SingletonPredictionContext.create(mergedParents[0],\n\t\t\t\t\tmergedReturnStates[0]);\n\t\t\tif (mergeCache !== null) {\n\t\t\t\tmergeCache.set(a, b, a_);\n\t\t\t}\n\t\t\treturn a_;\n\t\t}\n\t\tmergedParents = mergedParents.slice(0, k);\n\t\tmergedReturnStates = mergedReturnStates.slice(0, k);\n\t}\n\n\tvar M = new ArrayPredictionContext(mergedParents, mergedReturnStates);\n\n\t// if we created same array as a or b, return that instead\n\t// TODO: track whether this is possible above during merge sort for speed\n\tif (M === a) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, a);\n\t\t}\n\t\treturn a;\n\t}\n\tif (M === b) {\n\t\tif (mergeCache !== null) {\n\t\t\tmergeCache.set(a, b, b);\n\t\t}\n\t\treturn b;\n\t}\n\tcombineCommonParents(mergedParents);\n\n\tif (mergeCache !== null) {\n\t\tmergeCache.set(a, b, M);\n\t}\n\treturn M;\n}\n\n//\n// Make pass over all <em>M</em> {@code parents}; merge any {@code equals()}\n// ones.\n// /\nfunction combineCommonParents(parents) {\n\tvar uniqueParents = new Map();\n\n\tfor (var p = 0; p < parents.length; p++) {\n\t\tvar parent = parents[p];\n\t\tif (!(uniqueParents.containsKey(parent))) {\n\t\t\tuniqueParents.put(parent, parent);\n\t\t}\n\t}\n\tfor (var q = 0; q < parents.length; q++) {\n\t\tparents[q] = uniqueParents.get(parents[q]);\n\t}\n}\n\nfunction getCachedPredictionContext(context, contextCache, visited) {\n\tif (context.isEmpty()) {\n\t\treturn context;\n\t}\n\tvar existing = visited.get(context) || null;\n\tif (existing !== null) {\n\t\treturn existing;\n\t}\n\texisting = contextCache.get(context);\n\tif (existing !== null) {\n\t\tvisited.put(context, existing);\n\t\treturn existing;\n\t}\n\tvar changed = false;\n\tvar parents = [];\n\tfor (var i = 0; i < parents.length; i++) {\n\t\tvar parent = getCachedPredictionContext(context.getParent(i), contextCache, visited);\n\t\tif (changed || parent !== context.getParent(i)) {\n\t\t\tif (!changed) {\n\t\t\t\tparents = [];\n\t\t\t\tfor (var j = 0; j < context.length; j++) {\n\t\t\t\t\tparents[j] = context.getParent(j);\n\t\t\t\t}\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\tparents[i] = parent;\n\t\t}\n\t}\n\tif (!changed) {\n\t\tcontextCache.add(context);\n\t\tvisited.put(context, context);\n\t\treturn context;\n\t}\n\tvar updated = null;\n\tif (parents.length === 0) {\n\t\tupdated = PredictionContext.EMPTY;\n\t} else if (parents.length === 1) {\n\t\tupdated = SingletonPredictionContext.create(parents[0], context\n\t\t\t\t.getReturnState(0));\n\t} else {\n\t\tupdated = new ArrayPredictionContext(parents, context.returnStates);\n\t}\n\tcontextCache.add(updated);\n\tvisited.put(updated, updated);\n\tvisited.put(context, updated);\n\n\treturn updated;\n}\n\n// ter's recursive version of Sam's getAllNodes()\nfunction getAllContextNodes(context, nodes, visited) {\n\tif (nodes === null) {\n\t\tnodes = [];\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else if (visited === null) {\n\t\tvisited = new Map();\n\t\treturn getAllContextNodes(context, nodes, visited);\n\t} else {\n\t\tif (context === null || visited.containsKey(context)) {\n\t\t\treturn nodes;\n\t\t}\n\t\tvisited.put(context, context);\n\t\tnodes.push(context);\n\t\tfor (var i = 0; i < context.length; i++) {\n\t\t\tgetAllContextNodes(context.getParent(i), nodes, visited);\n\t\t}\n\t\treturn nodes;\n\t}\n}\n\nexports.merge = merge;\nexports.PredictionContext = PredictionContext;\nexports.PredictionContextCache = PredictionContextCache;\nexports.SingletonPredictionContext = SingletonPredictionContext;\nexports.predictionContextFromRuleContext = predictionContextFromRuleContext;\nexports.getCachedPredictionContext = getCachedPredictionContext;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./Token').Token;\nvar ConsoleErrorListener = require('./error/ErrorListener').ConsoleErrorListener;\nvar ProxyErrorListener = require('./error/ErrorListener').ProxyErrorListener;\n\nfunction Recognizer() {\n this._listeners = [ ConsoleErrorListener.INSTANCE ];\n this._interp = null;\n this._stateNumber = -1;\n return this;\n}\n\nRecognizer.tokenTypeMapCache = {};\nRecognizer.ruleIndexMapCache = {};\n\n\nRecognizer.prototype.checkVersion = function(toolVersion) {\n var runtimeVersion = \"4.8\";\n if (runtimeVersion!==toolVersion) {\n console.log(\"ANTLR runtime and generated code versions disagree: \"+runtimeVersion+\"!=\"+toolVersion);\n }\n};\n\nRecognizer.prototype.addErrorListener = function(listener) {\n this._listeners.push(listener);\n};\n\nRecognizer.prototype.removeErrorListeners = function() {\n this._listeners = [];\n};\n\nRecognizer.prototype.getTokenTypeMap = function() {\n var tokenNames = this.getTokenNames();\n if (tokenNames===null) {\n throw(\"The current recognizer does not provide a list of token names.\");\n }\n var result = this.tokenTypeMapCache[tokenNames];\n if(result===undefined) {\n result = tokenNames.reduce(function(o, k, i) { o[k] = i; });\n result.EOF = Token.EOF;\n this.tokenTypeMapCache[tokenNames] = result;\n }\n return result;\n};\n\n// Get a map from rule names to rule indexes.\n//\n// <p>Used for XPath and tree pattern compilation.</p>\n//\nRecognizer.prototype.getRuleIndexMap = function() {\n var ruleNames = this.ruleNames;\n if (ruleNames===null) {\n throw(\"The current recognizer does not provide a list of rule names.\");\n }\n var result = this.ruleIndexMapCache[ruleNames];\n if(result===undefined) {\n result = ruleNames.reduce(function(o, k, i) { o[k] = i; });\n this.ruleIndexMapCache[ruleNames] = result;\n }\n return result;\n};\n\nRecognizer.prototype.getTokenType = function(tokenName) {\n var ttype = this.getTokenTypeMap()[tokenName];\n if (ttype !==undefined) {\n return ttype;\n } else {\n return Token.INVALID_TYPE;\n }\n};\n\n\n// What is the error header, normally line/character position information?//\nRecognizer.prototype.getErrorHeader = function(e) {\n var line = e.getOffendingToken().line;\n var column = e.getOffendingToken().column;\n return \"line \" + line + \":\" + column;\n};\n\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\n// @deprecated This method is not called by the ANTLR 4 Runtime. Specific\n// implementations of {@link ANTLRErrorStrategy} may provide a similar\n// feature when necessary. For example, see\n// {@link DefaultErrorStrategy//getTokenErrorDisplay}.\n//\nRecognizer.prototype.getTokenErrorDisplay = function(t) {\n if (t===null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s===null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n s = s.replace(\"\\n\",\"\\\\n\").replace(\"\\r\",\"\\\\r\").replace(\"\\t\",\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\nRecognizer.prototype.getErrorListenerDispatch = function() {\n return new ProxyErrorListener(this._listeners);\n};\n\n// subclass needs to override these if there are sempreds or actions\n// that the ATN interp needs to execute\nRecognizer.prototype.sempred = function(localctx, ruleIndex, actionIndex) {\n return true;\n};\n\nRecognizer.prototype.precpred = function(localctx , precedence) {\n return true;\n};\n\n//Indicate that the recognizer has changed internal state that is\n//consistent with the ATN state passed in. This way we always know\n//where we are in the ATN as the parser goes along. The rule\n//context objects form a stack that lets us see the stack of\n//invoking rules. Combine this and we have complete ATN\n//configuration information.\n\nObject.defineProperty(Recognizer.prototype, \"state\", {\n\tget : function() {\n\t\treturn this._stateNumber;\n\t},\n\tset : function(state) {\n\t\tthis._stateNumber = state;\n\t}\n});\n\n\nexports.Recognizer = Recognizer;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A rule context is a record of a single rule invocation. It knows\n// which context invoked it, if any. If there is no parent context, then\n// naturally the invoking state is not valid. The parent link\n// provides a chain upwards from the current rule invocation to the root\n// of the invocation tree, forming a stack. We actually carry no\n// information about the rule associated with this context (except\n// when parsing). We keep only the state number of the invoking state from\n// the ATN submachine that invoked this. Contrast this with the s\n// pointer inside ParserRuleContext that tracks the current state\n// being \"executed\" for the current rule.\n//\n// The parent contexts are useful for computing lookahead sets and\n// getting error information.\n//\n// These objects are used during parsing and prediction.\n// For the special case of parsers, we use the subclass\n// ParserRuleContext.\n//\n// @see ParserRuleContext\n///\n\nvar RuleNode = require('./tree/Tree').RuleNode;\nvar INVALID_INTERVAL = require('./tree/Tree').INVALID_INTERVAL;\nvar INVALID_ALT_NUMBER = require('./atn/ATN').INVALID_ALT_NUMBER;\n\nfunction RuleContext(parent, invokingState) {\n\tRuleNode.call(this);\n\t// What context invoked this rule?\n\tthis.parentCtx = parent || null;\n\t// What state invoked the rule associated with this context?\n\t// The \"return address\" is the followState of invokingState\n\t// If parent is null, this should be -1.\n\tthis.invokingState = invokingState || -1;\n\treturn this;\n}\n\nRuleContext.prototype = Object.create(RuleNode.prototype);\nRuleContext.prototype.constructor = RuleContext;\n\nRuleContext.prototype.depth = function() {\n\tvar n = 0;\n\tvar p = this;\n\twhile (p !== null) {\n\t\tp = p.parentCtx;\n\t\tn += 1;\n\t}\n\treturn n;\n};\n\n// A context is empty if there is no invoking state; meaning nobody call\n// current context.\nRuleContext.prototype.isEmpty = function() {\n\treturn this.invokingState === -1;\n};\n\n// satisfy the ParseTree / SyntaxTree interface\n\nRuleContext.prototype.getSourceInterval = function() {\n\treturn INVALID_INTERVAL;\n};\n\nRuleContext.prototype.getRuleContext = function() {\n\treturn this;\n};\n\nRuleContext.prototype.getPayload = function() {\n\treturn this;\n};\n\n// Return the combined text of all child nodes. This method only considers\n// tokens which have been added to the parse tree.\n// <p>\n// Since tokens on hidden channels (e.g. whitespace or comments) are not\n// added to the parse trees, they will not appear in the output of this\n// method.\n// /\nRuleContext.prototype.getText = function() {\n\tif (this.getChildCount() === 0) {\n\t\treturn \"\";\n\t} else {\n\t\treturn this.children.map(function(child) {\n\t\t\treturn child.getText();\n\t\t}).join(\"\");\n\t}\n};\n\n// For rule associated with this parse tree internal node, return\n// the outer alternative number used to match the input. Default\n// implementation does not compute nor store this alt num. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\n// to set it.\nRuleContext.prototype.getAltNumber = function() { return INVALID_ALT_NUMBER; }\n\n// Set the outer alternative number for this context node. Default\n// implementation does nothing to avoid backing field overhead for\n// trees that don't need it. Create\n// a subclass of ParserRuleContext with backing field and set\n// option contextSuperClass.\nRuleContext.prototype.setAltNumber = function(altNumber) { }\n\nRuleContext.prototype.getChild = function(i) {\n\treturn null;\n};\n\nRuleContext.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nRuleContext.prototype.accept = function(visitor) {\n\treturn visitor.visitChildren(this);\n};\n\n//need to manage circular dependencies, so export now\nexports.RuleContext = RuleContext;\nvar Trees = require('./tree/Trees').Trees;\n\n\n// Print out a whole tree, not just a node, in LISP format\n// (root child1 .. childN). Print just a node if this is a leaf.\n//\n\nRuleContext.prototype.toStringTree = function(ruleNames, recog) {\n\treturn Trees.toStringTree(this, ruleNames, recog);\n};\n\nRuleContext.prototype.toString = function(ruleNames, stop) {\n\truleNames = ruleNames || null;\n\tstop = stop || null;\n\tvar p = this;\n\tvar s = \"[\";\n\twhile (p !== null && p !== stop) {\n\t\tif (ruleNames === null) {\n\t\t\tif (!p.isEmpty()) {\n\t\t\t\ts += p.invokingState;\n\t\t\t}\n\t\t} else {\n\t\t\tvar ri = p.ruleIndex;\n\t\t\tvar ruleName = (ri >= 0 && ri < ruleNames.length) ? ruleNames[ri]\n\t\t\t\t\t: \"\" + ri;\n\t\t\ts += ruleName;\n\t\t}\n\t\tif (p.parentCtx !== null && (ruleNames !== null || !p.parentCtx.isEmpty())) {\n\t\t\ts += \" \";\n\t\t}\n\t\tp = p.parentCtx;\n\t}\n\ts += \"]\";\n\treturn s;\n};\n\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A token has properties: text, type, line, character position in the line\n// (so we can ignore tabs), token channel, index, and source from which\n// we obtained this token.\n\nfunction Token() {\n\tthis.source = null;\n\tthis.type = null; // token type of the token\n\tthis.channel = null; // The parser ignores everything not on DEFAULT_CHANNEL\n\tthis.start = null; // optional; return -1 if not implemented.\n\tthis.stop = null; // optional; return -1 if not implemented.\n\tthis.tokenIndex = null; // from 0..n-1 of the token object in the input stream\n\tthis.line = null; // line=1..n of the 1st character\n\tthis.column = null; // beginning of the line at which it occurs, 0..n-1\n\tthis._text = null; // text of the token.\n\treturn this;\n}\n\nToken.INVALID_TYPE = 0;\n\n// During lookahead operations, this \"token\" signifies we hit rule end ATN state\n// and did not follow it despite needing to.\nToken.EPSILON = -2;\n\nToken.MIN_USER_TOKEN_TYPE = 1;\n\nToken.EOF = -1;\n\n// All tokens go to the parser (unless skip() is called in that rule)\n// on a particular \"channel\". The parser tunes to a particular channel\n// so that whitespace etc... can go to the parser on a \"hidden\" channel.\n\nToken.DEFAULT_CHANNEL = 0;\n\n// Anything on different channel than DEFAULT_CHANNEL is not parsed\n// by parser.\n\nToken.HIDDEN_CHANNEL = 1;\n\n// Explicitly set the text for this token. If {code text} is not\n// {@code null}, then {@link //getText} will return this value rather than\n// extracting the text from the input.\n//\n// @param text The explicit text of the token, or {@code null} if the text\n// should be obtained from the input along with the start and stop indexes\n// of the token.\n\nObject.defineProperty(Token.prototype, \"text\", {\n\tget : function() {\n\t\treturn this._text;\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nToken.prototype.getTokenSource = function() {\n\treturn this.source[0];\n};\n\nToken.prototype.getInputStream = function() {\n\treturn this.source[1];\n};\n\nfunction CommonToken(source, type, channel, start, stop) {\n\tToken.call(this);\n\tthis.source = source !== undefined ? source : CommonToken.EMPTY_SOURCE;\n\tthis.type = type !== undefined ? type : null;\n\tthis.channel = channel !== undefined ? channel : Token.DEFAULT_CHANNEL;\n\tthis.start = start !== undefined ? start : -1;\n\tthis.stop = stop !== undefined ? stop : -1;\n\tthis.tokenIndex = -1;\n\tif (this.source[0] !== null) {\n\t\tthis.line = source[0].line;\n\t\tthis.column = source[0].column;\n\t} else {\n\t\tthis.column = -1;\n\t}\n\treturn this;\n}\n\nCommonToken.prototype = Object.create(Token.prototype);\nCommonToken.prototype.constructor = CommonToken;\n\n// An empty {@link Pair} which is used as the default value of\n// {@link //source} for tokens that do not have a source.\nCommonToken.EMPTY_SOURCE = [ null, null ];\n\n// Constructs a new {@link CommonToken} as a copy of another {@link Token}.\n//\n// <p>\n// If {@code oldToken} is also a {@link CommonToken} instance, the newly\n// constructed token will share a reference to the {@link //text} field and\n// the {@link Pair} stored in {@link //source}. Otherwise, {@link //text} will\n// be assigned the result of calling {@link //getText}, and {@link //source}\n// will be constructed from the result of {@link Token//getTokenSource} and\n// {@link Token//getInputStream}.</p>\n//\n// @param oldToken The token to copy.\n//\nCommonToken.prototype.clone = function() {\n\tvar t = new CommonToken(this.source, this.type, this.channel, this.start,\n\t\t\tthis.stop);\n\tt.tokenIndex = this.tokenIndex;\n\tt.line = this.line;\n\tt.column = this.column;\n\tt.text = this.text;\n\treturn t;\n};\n\nObject.defineProperty(CommonToken.prototype, \"text\", {\n\tget : function() {\n\t\tif (this._text !== null) {\n\t\t\treturn this._text;\n\t\t}\n\t\tvar input = this.getInputStream();\n\t\tif (input === null) {\n\t\t\treturn null;\n\t\t}\n\t\tvar n = input.size;\n\t\tif (this.start < n && this.stop < n) {\n\t\t\treturn input.getText(this.start, this.stop);\n\t\t} else {\n\t\t\treturn \"<EOF>\";\n\t\t}\n\t},\n\tset : function(text) {\n\t\tthis._text = text;\n\t}\n});\n\nCommonToken.prototype.toString = function() {\n\tvar txt = this.text;\n\tif (txt !== null) {\n\t\ttxt = txt.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\").replace(/\\t/g, \"\\\\t\");\n\t} else {\n\t\ttxt = \"<no text>\";\n\t}\n\treturn \"[@\" + this.tokenIndex + \",\" + this.start + \":\" + this.stop + \"='\" +\n\t\t\ttxt + \"',<\" + this.type + \">\" +\n\t\t\t(this.channel > 0 ? \",channel=\" + this.channel : \"\") + \",\" +\n\t\t\tthis.line + \":\" + this.column + \"]\";\n};\n\nexports.Token = Token;\nexports.CommonToken = CommonToken;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction arrayToString(a) {\n return \"[\" + a.join(\", \") + \"]\";\n}\n\nString.prototype.seed = String.prototype.seed || Math.round(Math.random() * Math.pow(2, 32));\n\nString.prototype.hashCode = function () {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i,\n key = this.toString();\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = String.prototype.seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n};\n\nfunction standardEqualsFunction(a, b) {\n return a.equals(b);\n}\n\nfunction standardHashCodeFunction(a) {\n return a.hashCode();\n}\n\nfunction Set(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Set.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l + this.data[key].length;\n }\n }\n return l;\n }\n});\n\nSet.prototype.add = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n values.push(value);\n return value;\n } else {\n this.data[key] = [value];\n return value;\n }\n};\n\nSet.prototype.contains = function (value) {\n return this.get(value) != null;\n};\n\nSet.prototype.get = function (value) {\n var hash = this.hashFunction(value);\n var key = \"hash_\" + hash;\n if (key in this.data) {\n var values = this.data[key];\n for (var i = 0; i < values.length; i++) {\n if (this.equalsFunction(value, values[i])) {\n return values[i];\n }\n }\n }\n return null;\n};\n\nSet.prototype.values = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\nSet.prototype.toString = function () {\n return arrayToString(this.values());\n};\n\nfunction BitSet() {\n this.data = [];\n return this;\n}\n\nBitSet.prototype.add = function (value) {\n this.data[value] = true;\n};\n\nBitSet.prototype.or = function (set) {\n var bits = this;\n Object.keys(set.data).map(function (alt) {\n bits.add(alt);\n });\n};\n\nBitSet.prototype.remove = function (value) {\n delete this.data[value];\n};\n\nBitSet.prototype.contains = function (value) {\n return this.data[value] === true;\n};\n\nBitSet.prototype.values = function () {\n return Object.keys(this.data);\n};\n\nBitSet.prototype.minValue = function () {\n return Math.min.apply(null, this.values());\n};\n\nBitSet.prototype.hashCode = function () {\n var hash = new Hash();\n hash.update(this.values());\n return hash.finish();\n};\n\nBitSet.prototype.equals = function (other) {\n if (!(other instanceof BitSet)) {\n return false;\n }\n return this.hashCode() === other.hashCode();\n};\n\nObject.defineProperty(BitSet.prototype, \"length\", {\n get: function () {\n return this.values().length;\n }\n});\n\nBitSet.prototype.toString = function () {\n return \"{\" + this.values().join(\", \") + \"}\";\n};\n\nfunction Map(hashFunction, equalsFunction) {\n this.data = {};\n this.hashFunction = hashFunction || standardHashCodeFunction;\n this.equalsFunction = equalsFunction || standardEqualsFunction;\n return this;\n}\n\nObject.defineProperty(Map.prototype, \"length\", {\n get: function () {\n var l = 0;\n for (var hashKey in this.data) {\n if (hashKey.indexOf(\"hash_\") === 0) {\n l = l + this.data[hashKey].length;\n }\n }\n return l;\n }\n});\n\nMap.prototype.put = function (key, value) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if (hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key)) {\n var oldValue = entry.value;\n entry.value = value;\n return oldValue;\n }\n }\n entries.push({key:key, value:value});\n return value;\n } else {\n this.data[hashKey] = [{key:key, value:value}];\n return value;\n }\n};\n\nMap.prototype.containsKey = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return true;\n }\n }\n return false;\n};\n\nMap.prototype.get = function (key) {\n var hashKey = \"hash_\" + this.hashFunction(key);\n if(hashKey in this.data) {\n var entries = this.data[hashKey];\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n if (this.equalsFunction(key, entry.key))\n return entry.value;\n }\n }\n return null;\n};\n\nMap.prototype.entries = function () {\n var l = [];\n for (var key in this.data) {\n if (key.indexOf(\"hash_\") === 0) {\n l = l.concat(this.data[key]);\n }\n }\n return l;\n};\n\n\nMap.prototype.getKeys = function () {\n return this.entries().map(function(e) {\n return e.key;\n });\n};\n\n\nMap.prototype.getValues = function () {\n return this.entries().map(function(e) {\n return e.value;\n });\n};\n\n\nMap.prototype.toString = function () {\n var ss = this.entries().map(function(entry) {\n return '{' + entry.key + ':' + entry.value + '}';\n });\n return '[' + ss.join(\", \") + ']';\n};\n\n\nfunction AltDict() {\n this.data = {};\n return this;\n}\n\n\nAltDict.prototype.get = function (key) {\n key = \"k-\" + key;\n if (key in this.data) {\n return this.data[key];\n } else {\n return null;\n }\n};\n\nAltDict.prototype.put = function (key, value) {\n key = \"k-\" + key;\n this.data[key] = value;\n};\n\nAltDict.prototype.values = function () {\n var data = this.data;\n var keys = Object.keys(this.data);\n return keys.map(function (key) {\n return data[key];\n });\n};\n\nfunction DoubleDict(defaultMapCtor) {\n this.defaultMapCtor = defaultMapCtor || Map;\n this.cacheMap = new this.defaultMapCtor();\n return this;\n}\n\nfunction Hash() {\n this.count = 0;\n this.hash = 0;\n return this;\n}\n\nHash.prototype.update = function () {\n for(var i=0;i<arguments.length;i++) {\n var value = arguments[i];\n if (value == null)\n continue;\n if(Array.isArray(value))\n this.update.apply(this, value);\n else {\n var k = 0;\n switch (typeof(value)) {\n case 'undefined':\n case 'function':\n continue;\n case 'number':\n case 'boolean':\n k = value;\n break;\n case 'string':\n k = value.hashCode();\n break;\n default:\n if(value.updateHashCode)\n value.updateHashCode(this);\n else\n console.log(\"No updateHashCode for \" + value.toString())\n continue;\n }\n k = k * 0xCC9E2D51;\n k = (k << 15) | (k >>> (32 - 15));\n k = k * 0x1B873593;\n this.count = this.count + 1;\n var hash = this.hash ^ k;\n hash = (hash << 13) | (hash >>> (32 - 13));\n hash = hash * 5 + 0xE6546B64;\n this.hash = hash;\n }\n }\n};\n\nHash.prototype.finish = function () {\n var hash = this.hash ^ (this.count * 4);\n hash = hash ^ (hash >>> 16);\n hash = hash * 0x85EBCA6B;\n hash = hash ^ (hash >>> 13);\n hash = hash * 0xC2B2AE35;\n hash = hash ^ (hash >>> 16);\n return hash;\n};\n\nfunction hashStuff() {\n var hash = new Hash();\n hash.update.apply(hash, arguments);\n return hash.finish();\n}\n\nDoubleDict.prototype.get = function (a, b) {\n var d = this.cacheMap.get(a) || null;\n return d === null ? null : (d.get(b) || null);\n};\n\nDoubleDict.prototype.set = function (a, b, o) {\n var d = this.cacheMap.get(a) || null;\n if (d === null) {\n d = new this.defaultMapCtor();\n this.cacheMap.put(a, d);\n }\n d.put(b, o);\n};\n\n\nfunction escapeWhitespace(s, escapeSpaces) {\n s = s.replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\");\n if (escapeSpaces) {\n s = s.replace(/ /g, \"\\u00B7\");\n }\n return s;\n}\n\nfunction titleCase(str) {\n return str.replace(/\\w\\S*/g, function (txt) {\n return txt.charAt(0).toUpperCase() + txt.substr(1);\n });\n};\n\nfunction equalArrays(a, b)\n{\n if (!Array.isArray(a) || !Array.isArray(b))\n return false;\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (var i = 0; i < a.length; i++) {\n if (a[i] == b[i])\n continue;\n if (!a[i].equals(b[i]))\n return false;\n }\n return true;\n};\n\nexports.Hash = Hash;\nexports.Set = Set;\nexports.Map = Map;\nexports.BitSet = BitSet;\nexports.AltDict = AltDict;\nexports.DoubleDict = DoubleDict;\nexports.hashStuff = hashStuff;\nexports.escapeWhitespace = escapeWhitespace;\nexports.arrayToString = arrayToString;\nexports.titleCase = titleCase;\nexports.equalArrays = equalArrays;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar LL1Analyzer = require('./../LL1Analyzer').LL1Analyzer;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ATN(grammarType , maxTokenType) {\n\n // Used for runtime deserialization of ATNs from strings///\n // The type of the ATN.\n this.grammarType = grammarType;\n // The maximum value for any symbol recognized by a transition in the ATN.\n this.maxTokenType = maxTokenType;\n this.states = [];\n // Each subrule/rule is a decision point and we must track them so we\n // can go back later and build DFA predictors for them. This includes\n // all the rules, subrules, optional blocks, ()+, ()* etc...\n this.decisionToState = [];\n // Maps from rule index to starting state number.\n this.ruleToStartState = [];\n // Maps from rule index to stop state number.\n this.ruleToStopState = null;\n this.modeNameToStartState = {};\n // For lexer ATNs, this maps the rule index to the resulting token type.\n // For parser ATNs, this maps the rule index to the generated bypass token\n // type if the\n // {@link ATNDeserializationOptions//isGenerateRuleBypassTransitions}\n // deserialization option was specified; otherwise, this is {@code null}.\n this.ruleToTokenType = null;\n // For lexer ATNs, this is an array of {@link LexerAction} objects which may\n // be referenced by action transitions in the ATN.\n this.lexerActions = null;\n this.modeToStartState = [];\n\n return this;\n}\n\n// Compute the set of valid tokens that can occur starting in state {@code s}.\n// If {@code ctx} is null, the set of tokens will not include what can follow\n// the rule surrounding {@code s}. In other words, the set will be\n// restricted to tokens reachable staying within {@code s}'s rule.\nATN.prototype.nextTokensInContext = function(s, ctx) {\n var anal = new LL1Analyzer(this);\n return anal.LOOK(s, null, ctx);\n};\n\n// Compute the set of valid tokens that can occur starting in {@code s} and\n// staying in same rule. {@link Token//EPSILON} is in set if we reach end of\n// rule.\nATN.prototype.nextTokensNoContext = function(s) {\n if (s.nextTokenWithinRule !== null ) {\n return s.nextTokenWithinRule;\n }\n s.nextTokenWithinRule = this.nextTokensInContext(s, null);\n s.nextTokenWithinRule.readOnly = true;\n return s.nextTokenWithinRule;\n};\n\nATN.prototype.nextTokens = function(s, ctx) {\n if ( ctx===undefined ) {\n return this.nextTokensNoContext(s);\n } else {\n return this.nextTokensInContext(s, ctx);\n }\n};\n\nATN.prototype.addState = function( state) {\n if ( state !== null ) {\n state.atn = this;\n state.stateNumber = this.states.length;\n }\n this.states.push(state);\n};\n\nATN.prototype.removeState = function( state) {\n this.states[state.stateNumber] = null; // just free mem, don't shift states in list\n};\n\nATN.prototype.defineDecisionState = function( s) {\n this.decisionToState.push(s);\n s.decision = this.decisionToState.length-1;\n return s.decision;\n};\n\nATN.prototype.getDecisionState = function( decision) {\n if (this.decisionToState.length===0) {\n return null;\n } else {\n return this.decisionToState[decision];\n }\n};\n\n// Computes the set of input symbols which could follow ATN state number\n// {@code stateNumber} in the specified full {@code context}. This method\n// considers the complete parser context, but does not evaluate semantic\n// predicates (i.e. all predicates encountered during the calculation are\n// assumed true). If a path in the ATN exists from the starting state to the\n// {@link RuleStopState} of the outermost context without matching any\n// symbols, {@link Token//EOF} is added to the returned set.\n//\n// <p>If {@code context} is {@code null}, it is treated as\n// {@link ParserRuleContext//EMPTY}.</p>\n//\n// @param stateNumber the ATN state number\n// @param context the full parse context\n// @return The set of potentially valid input symbols which could follow the\n// specified state in the specified context.\n// @throws IllegalArgumentException if the ATN does not contain a state with\n// number {@code stateNumber}\nvar Token = require('./../Token').Token;\n\nATN.prototype.getExpectedTokens = function( stateNumber, ctx ) {\n if ( stateNumber < 0 || stateNumber >= this.states.length ) {\n throw(\"Invalid state number.\");\n }\n var s = this.states[stateNumber];\n var following = this.nextTokens(s);\n if (!following.contains(Token.EPSILON)) {\n return following;\n }\n var expected = new IntervalSet();\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n while (ctx !== null && ctx.invokingState >= 0 && following.contains(Token.EPSILON)) {\n var invokingState = this.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n following = this.nextTokens(rt.followState);\n expected.addSet(following);\n expected.removeOne(Token.EPSILON);\n ctx = ctx.parentCtx;\n }\n if (following.contains(Token.EPSILON)) {\n expected.addOne(Token.EOF);\n }\n return expected;\n};\n\nATN.INVALID_ALT_NUMBER = 0;\n\nexports.ATN = ATN;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// A tuple: (ATN state, predicted alt, syntactic, semantic context).\n// The syntactic context is a graph-structured stack node whose\n// path(s) to the root is the rule invocation(s)\n// chain used to arrive at the state. The semantic context is\n// the tree of semantic predicates encountered before reaching\n// an ATN state.\n///\n\nvar DecisionState = require('./ATNState').DecisionState;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\n\n\nfunction checkParams(params, isCfg) {\n\tif(params===null) {\n\t\tvar result = { state:null, alt:null, context:null, semanticContext:null };\n\t\tif(isCfg) {\n\t\t\tresult.reachesIntoOuterContext = 0;\n\t\t}\n\t\treturn result;\n\t} else {\n\t\tvar props = {};\n\t\tprops.state = params.state || null;\n\t\tprops.alt = (params.alt === undefined) ? null : params.alt;\n\t\tprops.context = params.context || null;\n\t\tprops.semanticContext = params.semanticContext || null;\n\t\tif(isCfg) {\n\t\t\tprops.reachesIntoOuterContext = params.reachesIntoOuterContext || 0;\n\t\t\tprops.precedenceFilterSuppressed = params.precedenceFilterSuppressed || false;\n\t\t}\n\t\treturn props;\n\t}\n}\n\nfunction ATNConfig(params, config) {\n\tthis.checkContext(params, config);\n\tparams = checkParams(params);\n\tconfig = checkParams(config, true);\n // The ATN state associated with this configuration///\n this.state = params.state!==null ? params.state : config.state;\n // What alt (or lexer rule) is predicted by this configuration///\n this.alt = params.alt!==null ? params.alt : config.alt;\n // The stack of invoking states leading to the rule/states associated\n // with this config. We track only those contexts pushed during\n // execution of the ATN simulator.\n this.context = params.context!==null ? params.context : config.context;\n this.semanticContext = params.semanticContext!==null ? params.semanticContext :\n (config.semanticContext!==null ? config.semanticContext : SemanticContext.NONE);\n // We cannot execute predicates dependent upon local context unless\n // we know for sure we are in the correct context. Because there is\n // no way to do this efficiently, we simply cannot evaluate\n // dependent predicates unless we are in the rule that initially\n // invokes the ATN simulator.\n //\n // closure() tracks the depth of how far we dip into the\n // outer context: depth > 0. Note that it may not be totally\n // accurate depth since I don't ever decrement. TODO: make it a boolean then\n this.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.precedenceFilterSuppressed = config.precedenceFilterSuppressed;\n return this;\n}\n\nATNConfig.prototype.checkContext = function(params, config) {\n\tif((params.context===null || params.context===undefined) &&\n\t\t\t(config===null || config.context===null || config.context===undefined)) {\n\t\tthis.context = null;\n\t}\n};\n\n\nATNConfig.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n\nATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext);\n};\n\n// An ATN configuration is equal to another if both have\n// the same state, they predict the same alternative, and\n// syntactic/semantic contexts are the same.\n\nATNConfig.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n (this.context===null ? other.context===null : this.context.equals(other.context)) &&\n this.semanticContext.equals(other.semanticContext) &&\n this.precedenceFilterSuppressed===other.precedenceFilterSuppressed;\n }\n};\n\n\nATNConfig.prototype.hashCodeForConfigSet = function() {\n var hash = new Hash();\n hash.update(this.state.stateNumber, this.alt, this.semanticContext);\n return hash.finish();\n};\n\n\nATNConfig.prototype.equalsForConfigSet = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof ATNConfig)) {\n return false;\n } else {\n return this.state.stateNumber===other.state.stateNumber &&\n this.alt===other.alt &&\n this.semanticContext.equals(other.semanticContext);\n }\n};\n\n\nATNConfig.prototype.toString = function() {\n return \"(\" + this.state + \",\" + this.alt +\n (this.context!==null ? \",[\" + this.context.toString() + \"]\" : \"\") +\n (this.semanticContext !== SemanticContext.NONE ?\n (\",\" + this.semanticContext.toString())\n : \"\") +\n (this.reachesIntoOuterContext>0 ?\n (\",up=\" + this.reachesIntoOuterContext)\n : \"\") + \")\";\n};\n\n\nfunction LexerATNConfig(params, config) {\n\tATNConfig.call(this, params, config);\n\n // This is the backing field for {@link //getLexerActionExecutor}.\n\tvar lexerActionExecutor = params.lexerActionExecutor || null;\n this.lexerActionExecutor = lexerActionExecutor || (config!==null ? config.lexerActionExecutor : null);\n this.passedThroughNonGreedyDecision = config!==null ? this.checkNonGreedyDecision(config, this.state) : false;\n return this;\n}\n\nLexerATNConfig.prototype = Object.create(ATNConfig.prototype);\nLexerATNConfig.prototype.constructor = LexerATNConfig;\n\nLexerATNConfig.prototype.updateHashCode = function(hash) {\n hash.update(this.state.stateNumber, this.alt, this.context, this.semanticContext, this.passedThroughNonGreedyDecision, this.lexerActionExecutor);\n};\n\nLexerATNConfig.prototype.equals = function(other) {\n return this === other ||\n (other instanceof LexerATNConfig &&\n this.passedThroughNonGreedyDecision == other.passedThroughNonGreedyDecision &&\n (this.lexerActionExecutor ? this.lexerActionExecutor.equals(other.lexerActionExecutor) : !other.lexerActionExecutor) &&\n ATNConfig.prototype.equals.call(this, other));\n};\n\nLexerATNConfig.prototype.hashCodeForConfigSet = LexerATNConfig.prototype.hashCode;\n\nLexerATNConfig.prototype.equalsForConfigSet = LexerATNConfig.prototype.equals;\n\n\nLexerATNConfig.prototype.checkNonGreedyDecision = function(source, target) {\n return source.passedThroughNonGreedyDecision ||\n (target instanceof DecisionState) && target.nonGreedy;\n};\n\nexports.ATNConfig = ATNConfig;\nexports.LexerATNConfig = LexerATNConfig;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n//\n// Specialized {@link Set}{@code <}{@link ATNConfig}{@code >} that can track\n// info about the set, with support for combining similar configurations using a\n// graph-structured stack.\n///\n\nvar ATN = require('./ATN').ATN;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar merge = require('./../PredictionContext').merge;\n\nfunction hashATNConfig(c) {\n\treturn c.hashCodeForConfigSet();\n}\n\nfunction equalATNConfigs(a, b) {\n\tif ( a===b ) {\n\t\treturn true;\n\t} else if ( a===null || b===null ) {\n\t\treturn false;\n\t} else\n return a.equalsForConfigSet(b);\n }\n\n\nfunction ATNConfigSet(fullCtx) {\n\t//\n\t// The reason that we need this is because we don't want the hash map to use\n\t// the standard hash code and equals. We need all configurations with the\n\t// same\n\t// {@code (s,i,_,semctx)} to be equal. Unfortunately, this key effectively\n\t// doubles\n\t// the number of objects associated with ATNConfigs. The other solution is\n\t// to\n\t// use a hash table that lets us specify the equals/hashcode operation.\n\t// All configs but hashed by (s, i, _, pi) not including context. Wiped out\n\t// when we go readonly as this set becomes a DFA state.\n\tthis.configLookup = new Set(hashATNConfig, equalATNConfigs);\n\t// Indicates that this configuration set is part of a full context\n\t// LL prediction. It will be used to determine how to merge $. With SLL\n\t// it's a wildcard whereas it is not for LL context merge.\n\tthis.fullCtx = fullCtx === undefined ? true : fullCtx;\n\t// Indicates that the set of configurations is read-only. Do not\n\t// allow any code to manipulate the set; DFA states will point at\n\t// the sets and they must not change. This does not protect the other\n\t// fields; in particular, conflictingAlts is set after\n\t// we've made this readonly.\n\tthis.readOnly = false;\n\t// Track the elements as they are added to the set; supports get(i)///\n\tthis.configs = [];\n\n\t// TODO: these fields make me pretty uncomfortable but nice to pack up info\n\t// together, saves recomputation\n\t// TODO: can we track conflicts as they are added to save scanning configs\n\t// later?\n\tthis.uniqueAlt = 0;\n\tthis.conflictingAlts = null;\n\n\t// Used in parser and lexer. In lexer, it indicates we hit a pred\n\t// while computing a closure operation. Don't make a DFA state from this.\n\tthis.hasSemanticContext = false;\n\tthis.dipsIntoOuterContext = false;\n\n\tthis.cachedHashCode = -1;\n\n\treturn this;\n}\n\n// Adding a new config means merging contexts with existing configs for\n// {@code (s, i, pi, _)}, where {@code s} is the\n// {@link ATNConfig//state}, {@code i} is the {@link ATNConfig//alt}, and\n// {@code pi} is the {@link ATNConfig//semanticContext}. We use\n// {@code (s,i,pi)} as key.\n//\n// <p>This method updates {@link //dipsIntoOuterContext} and\n// {@link //hasSemanticContext} when necessary.</p>\n// /\nATNConfigSet.prototype.add = function(config, mergeCache) {\n\tif (mergeCache === undefined) {\n\t\tmergeCache = null;\n\t}\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (config.semanticContext !== SemanticContext.NONE) {\n\t\tthis.hasSemanticContext = true;\n\t}\n\tif (config.reachesIntoOuterContext > 0) {\n\t\tthis.dipsIntoOuterContext = true;\n\t}\n\tvar existing = this.configLookup.add(config);\n\tif (existing === config) {\n\t\tthis.cachedHashCode = -1;\n\t\tthis.configs.push(config); // track order here\n\t\treturn true;\n\t}\n\t// a previous (s,i,pi,_), merge with it and save result\n\tvar rootIsWildcard = !this.fullCtx;\n\tvar merged = merge(existing.context, config.context, rootIsWildcard, mergeCache);\n\t// no need to check for existing.context, config.context in cache\n\t// since only way to create new graphs is \"call rule\" and here. We\n\t// cache at both places.\n\texisting.reachesIntoOuterContext = Math.max( existing.reachesIntoOuterContext, config.reachesIntoOuterContext);\n\t// make sure to preserve the precedence filter suppression during the merge\n\tif (config.precedenceFilterSuppressed) {\n\t\texisting.precedenceFilterSuppressed = true;\n\t}\n\texisting.context = merged; // replace context; no need to alt mapping\n\treturn true;\n};\n\nATNConfigSet.prototype.getStates = function() {\n\tvar states = new Set();\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tstates.add(this.configs[i].state);\n\t}\n\treturn states;\n};\n\nATNConfigSet.prototype.getPredicates = function() {\n\tvar preds = [];\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar c = this.configs[i].semanticContext;\n\t\tif (c !== SemanticContext.NONE) {\n\t\t\tpreds.push(c.semanticContext);\n\t\t}\n\t}\n\treturn preds;\n};\n\nObject.defineProperty(ATNConfigSet.prototype, \"items\", {\n\tget : function() {\n\t\treturn this.configs;\n\t}\n});\n\nATNConfigSet.prototype.optimizeConfigs = function(interpreter) {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tif (this.configLookup.length === 0) {\n\t\treturn;\n\t}\n\tfor (var i = 0; i < this.configs.length; i++) {\n\t\tvar config = this.configs[i];\n\t\tconfig.context = interpreter.getCachedContext(config.context);\n\t}\n};\n\nATNConfigSet.prototype.addAll = function(coll) {\n\tfor (var i = 0; i < coll.length; i++) {\n\t\tthis.add(coll[i]);\n\t}\n\treturn false;\n};\n\nATNConfigSet.prototype.equals = function(other) {\n\treturn this === other ||\n\t\t(other instanceof ATNConfigSet &&\n\t\tUtils.equalArrays(this.configs, other.configs) &&\n\t\tthis.fullCtx === other.fullCtx &&\n\t\tthis.uniqueAlt === other.uniqueAlt &&\n\t\tthis.conflictingAlts === other.conflictingAlts &&\n\t\tthis.hasSemanticContext === other.hasSemanticContext &&\n\t\tthis.dipsIntoOuterContext === other.dipsIntoOuterContext);\n};\n\nATNConfigSet.prototype.hashCode = function() {\n var hash = new Hash();\n\thash.update(this.configs);\n return hash.finish();\n};\n\n\nATNConfigSet.prototype.updateHashCode = function(hash) {\n\tif (this.readOnly) {\n\t\tif (this.cachedHashCode === -1) {\n this.cachedHashCode = this.hashCode();\n\t\t}\n hash.update(this.cachedHashCode);\n\t} else {\n hash.update(this.hashCode());\n\t}\n};\n\n\nObject.defineProperty(ATNConfigSet.prototype, \"length\", {\n\tget : function() {\n\t\treturn this.configs.length;\n\t}\n});\n\nATNConfigSet.prototype.isEmpty = function() {\n\treturn this.configs.length === 0;\n};\n\nATNConfigSet.prototype.contains = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.contains(item);\n};\n\nATNConfigSet.prototype.containsFast = function(item) {\n\tif (this.configLookup === null) {\n\t\tthrow \"This method is not implemented for readonly sets.\";\n\t}\n\treturn this.configLookup.containsFast(item);\n};\n\nATNConfigSet.prototype.clear = function() {\n\tif (this.readOnly) {\n\t\tthrow \"This set is readonly\";\n\t}\n\tthis.configs = [];\n\tthis.cachedHashCode = -1;\n\tthis.configLookup = new Set();\n};\n\nATNConfigSet.prototype.setReadonly = function(readOnly) {\n\tthis.readOnly = readOnly;\n\tif (readOnly) {\n\t\tthis.configLookup = null; // can't mod, no need for lookup cache\n\t}\n};\n\nATNConfigSet.prototype.toString = function() {\n\treturn Utils.arrayToString(this.configs) +\n\t\t(this.hasSemanticContext ? \",hasSemanticContext=\" + this.hasSemanticContext : \"\") +\n\t\t(this.uniqueAlt !== ATN.INVALID_ALT_NUMBER ? \",uniqueAlt=\" + this.uniqueAlt : \"\") +\n\t\t(this.conflictingAlts !== null ? \",conflictingAlts=\" + this.conflictingAlts : \"\") +\n\t\t(this.dipsIntoOuterContext ? \",dipsIntoOuterContext\" : \"\");\n};\n\nfunction OrderedATNConfigSet() {\n\tATNConfigSet.call(this);\n\tthis.configLookup = new Set();\n\treturn this;\n}\n\nOrderedATNConfigSet.prototype = Object.create(ATNConfigSet.prototype);\nOrderedATNConfigSet.prototype.constructor = OrderedATNConfigSet;\n\nexports.ATNConfigSet = ATNConfigSet;\nexports.OrderedATNConfigSet = OrderedATNConfigSet;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nfunction ATNDeserializationOptions(copyFrom) {\n\tif(copyFrom===undefined) {\n\t\tcopyFrom = null;\n\t}\n\tthis.readOnly = false;\n this.verifyATN = copyFrom===null ? true : copyFrom.verifyATN;\n this.generateRuleBypassTransitions = copyFrom===null ? false : copyFrom.generateRuleBypassTransitions;\n\n return this;\n}\n\nATNDeserializationOptions.defaultOptions = new ATNDeserializationOptions();\nATNDeserializationOptions.defaultOptions.readOnly = true;\n\n// def __setattr__(self, key, value):\n// if key!=\"readOnly\" and self.readOnly:\n// raise Exception(\"The object is read only.\")\n// super(type(self), self).__setattr__(key,value)\n\nexports.ATNDeserializationOptions = ATNDeserializationOptions;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Token = require('./../Token').Token;\nvar ATN = require('./ATN').ATN;\nvar ATNType = require('./ATNType').ATNType;\nvar ATNStates = require('./ATNState');\nvar ATNState = ATNStates.ATNState;\nvar BasicState = ATNStates.BasicState;\nvar DecisionState = ATNStates.DecisionState;\nvar BlockStartState = ATNStates.BlockStartState;\nvar BlockEndState = ATNStates.BlockEndState;\nvar LoopEndState = ATNStates.LoopEndState;\nvar RuleStartState = ATNStates.RuleStartState;\nvar RuleStopState = ATNStates.RuleStopState;\nvar TokensStartState = ATNStates.TokensStartState;\nvar PlusLoopbackState = ATNStates.PlusLoopbackState;\nvar StarLoopbackState = ATNStates.StarLoopbackState;\nvar StarLoopEntryState = ATNStates.StarLoopEntryState;\nvar PlusBlockStartState = ATNStates.PlusBlockStartState;\nvar StarBlockStartState = ATNStates.StarBlockStartState;\nvar BasicBlockStartState = ATNStates.BasicBlockStartState;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar AtomTransition = Transitions.AtomTransition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar RangeTransition = Transitions.RangeTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar EpsilonTransition = Transitions.EpsilonTransition;\nvar WildcardTransition = Transitions.WildcardTransition;\nvar PredicateTransition = Transitions.PredicateTransition;\nvar PrecedencePredicateTransition = Transitions.PrecedencePredicateTransition;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Interval = require('./../IntervalSet').Interval;\nvar ATNDeserializationOptions = require('./ATNDeserializationOptions').ATNDeserializationOptions;\nvar LexerActions = require('./LexerAction');\nvar LexerActionType = LexerActions.LexerActionType;\nvar LexerSkipAction = LexerActions.LexerSkipAction;\nvar LexerChannelAction = LexerActions.LexerChannelAction;\nvar LexerCustomAction = LexerActions.LexerCustomAction;\nvar LexerMoreAction = LexerActions.LexerMoreAction;\nvar LexerTypeAction = LexerActions.LexerTypeAction;\nvar LexerPushModeAction = LexerActions.LexerPushModeAction;\nvar LexerPopModeAction = LexerActions.LexerPopModeAction;\nvar LexerModeAction = LexerActions.LexerModeAction;\n// This is the earliest supported serialized UUID.\n// stick to serialized version for now, we don't need a UUID instance\nvar BASE_SERIALIZED_UUID = \"AADB8D7E-AEEF-4415-AD2B-8204D6CF042E\";\n\n//\n// This UUID indicates the serialized ATN contains two sets of\n// IntervalSets, where the second set's values are encoded as\n// 32-bit integers to support the full Unicode SMP range up to U+10FFFF.\n//\nvar ADDED_UNICODE_SMP = \"59627784-3BE5-417A-B9EB-8131A7286089\";\n\n// This list contains all of the currently supported UUIDs, ordered by when\n// the feature first appeared in this branch.\nvar SUPPORTED_UUIDS = [ BASE_SERIALIZED_UUID, ADDED_UNICODE_SMP ];\n\nvar SERIALIZED_VERSION = 3;\n\n// This is the current serialized UUID.\nvar SERIALIZED_UUID = ADDED_UNICODE_SMP;\n\nfunction initArray( length, value) {\n\tvar tmp = [];\n\ttmp[length-1] = value;\n\treturn tmp.map(function(i) {return value;});\n}\n\nfunction ATNDeserializer (options) {\n\n if ( options=== undefined || options === null ) {\n options = ATNDeserializationOptions.defaultOptions;\n }\n this.deserializationOptions = options;\n this.stateFactories = null;\n this.actionFactories = null;\n\n return this;\n}\n\n// Determines if a particular serialized representation of an ATN supports\n// a particular feature, identified by the {@link UUID} used for serializing\n// the ATN at the time the feature was first introduced.\n//\n// @param feature The {@link UUID} marking the first time the feature was\n// supported in the serialized ATN.\n// @param actualUuid The {@link UUID} of the actual serialized ATN which is\n// currently being deserialized.\n// @return {@code true} if the {@code actualUuid} value represents a\n// serialized ATN at or after the feature identified by {@code feature} was\n// introduced; otherwise, {@code false}.\n\nATNDeserializer.prototype.isFeatureSupported = function(feature, actualUuid) {\n var idx1 = SUPPORTED_UUIDS.indexOf(feature);\n if (idx1<0) {\n return false;\n }\n var idx2 = SUPPORTED_UUIDS.indexOf(actualUuid);\n return idx2 >= idx1;\n};\n\nATNDeserializer.prototype.deserialize = function(data) {\n this.reset(data);\n this.checkVersion();\n this.checkUUID();\n var atn = this.readATN();\n this.readStates(atn);\n this.readRules(atn);\n this.readModes(atn);\n var sets = [];\n // First, deserialize sets with 16-bit arguments <= U+FFFF.\n this.readSets(atn, sets, this.readInt.bind(this));\n // Next, if the ATN was serialized with the Unicode SMP feature,\n // deserialize sets with 32-bit arguments <= U+10FFFF.\n if (this.isFeatureSupported(ADDED_UNICODE_SMP, this.uuid)) {\n this.readSets(atn, sets, this.readInt32.bind(this));\n }\n this.readEdges(atn, sets);\n this.readDecisions(atn);\n this.readLexerActions(atn);\n this.markPrecedenceDecisions(atn);\n this.verifyATN(atn);\n if (this.deserializationOptions.generateRuleBypassTransitions && atn.grammarType === ATNType.PARSER ) {\n this.generateRuleBypassTransitions(atn);\n // re-verify after modification\n this.verifyATN(atn);\n }\n return atn;\n};\n\nATNDeserializer.prototype.reset = function(data) {\n\tvar adjust = function(c) {\n var v = c.charCodeAt(0);\n return v>1 ? v-2 : v + 65534;\n\t};\n var temp = data.split(\"\").map(adjust);\n // don't adjust the first value since that's the version number\n temp[0] = data.charCodeAt(0);\n this.data = temp;\n this.pos = 0;\n};\n\nATNDeserializer.prototype.checkVersion = function() {\n var version = this.readInt();\n if ( version !== SERIALIZED_VERSION ) {\n throw (\"Could not deserialize ATN with version \" + version + \" (expected \" + SERIALIZED_VERSION + \").\");\n }\n};\n\nATNDeserializer.prototype.checkUUID = function() {\n var uuid = this.readUUID();\n if (SUPPORTED_UUIDS.indexOf(uuid)<0) {\n throw (\"Could not deserialize ATN with UUID: \" + uuid +\n \" (expected \" + SERIALIZED_UUID + \" or a legacy UUID).\", uuid, SERIALIZED_UUID);\n }\n this.uuid = uuid;\n};\n\nATNDeserializer.prototype.readATN = function() {\n var grammarType = this.readInt();\n var maxTokenType = this.readInt();\n return new ATN(grammarType, maxTokenType);\n};\n\nATNDeserializer.prototype.readStates = function(atn) {\n\tvar j, pair, stateNumber;\n var loopBackStateNumbers = [];\n var endStateNumbers = [];\n var nstates = this.readInt();\n for(var i=0; i<nstates; i++) {\n var stype = this.readInt();\n // ignore bad type of states\n if (stype===ATNState.INVALID_TYPE) {\n atn.addState(null);\n continue;\n }\n var ruleIndex = this.readInt();\n if (ruleIndex === 0xFFFF) {\n ruleIndex = -1;\n }\n var s = this.stateFactory(stype, ruleIndex);\n if (stype === ATNState.LOOP_END) { // special case\n var loopBackStateNumber = this.readInt();\n loopBackStateNumbers.push([s, loopBackStateNumber]);\n } else if(s instanceof BlockStartState) {\n var endStateNumber = this.readInt();\n endStateNumbers.push([s, endStateNumber]);\n }\n atn.addState(s);\n }\n // delay the assignment of loop back and end states until we know all the\n\t// state instances have been initialized\n for (j=0; j<loopBackStateNumbers.length; j++) {\n pair = loopBackStateNumbers[j];\n pair[0].loopBackState = atn.states[pair[1]];\n }\n\n for (j=0; j<endStateNumbers.length; j++) {\n pair = endStateNumbers[j];\n pair[0].endState = atn.states[pair[1]];\n }\n\n var numNonGreedyStates = this.readInt();\n for (j=0; j<numNonGreedyStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].nonGreedy = true;\n }\n\n var numPrecedenceStates = this.readInt();\n for (j=0; j<numPrecedenceStates; j++) {\n stateNumber = this.readInt();\n atn.states[stateNumber].isPrecedenceRule = true;\n }\n};\n\nATNDeserializer.prototype.readRules = function(atn) {\n var i;\n var nrules = this.readInt();\n if (atn.grammarType === ATNType.LEXER ) {\n atn.ruleToTokenType = initArray(nrules, 0);\n }\n atn.ruleToStartState = initArray(nrules, 0);\n for (i=0; i<nrules; i++) {\n var s = this.readInt();\n var startState = atn.states[s];\n atn.ruleToStartState[i] = startState;\n if ( atn.grammarType === ATNType.LEXER ) {\n var tokenType = this.readInt();\n if (tokenType === 0xFFFF) {\n tokenType = Token.EOF;\n }\n atn.ruleToTokenType[i] = tokenType;\n }\n }\n atn.ruleToStopState = initArray(nrules, 0);\n for (i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (!(state instanceof RuleStopState)) {\n continue;\n }\n atn.ruleToStopState[state.ruleIndex] = state;\n atn.ruleToStartState[state.ruleIndex].stopState = state;\n }\n};\n\nATNDeserializer.prototype.readModes = function(atn) {\n var nmodes = this.readInt();\n for (var i=0; i<nmodes; i++) {\n var s = this.readInt();\n atn.modeToStartState.push(atn.states[s]);\n }\n};\n\nATNDeserializer.prototype.readSets = function(atn, sets, readUnicode) {\n var m = this.readInt();\n for (var i=0; i<m; i++) {\n var iset = new IntervalSet();\n sets.push(iset);\n var n = this.readInt();\n var containsEof = this.readInt();\n if (containsEof!==0) {\n iset.addOne(-1);\n }\n for (var j=0; j<n; j++) {\n var i1 = readUnicode();\n var i2 = readUnicode();\n iset.addRange(i1, i2);\n }\n }\n};\n\nATNDeserializer.prototype.readEdges = function(atn, sets) {\n\tvar i, j, state, trans, target;\n var nedges = this.readInt();\n for (i=0; i<nedges; i++) {\n var src = this.readInt();\n var trg = this.readInt();\n var ttype = this.readInt();\n var arg1 = this.readInt();\n var arg2 = this.readInt();\n var arg3 = this.readInt();\n trans = this.edgeFactory(atn, ttype, src, trg, arg1, arg2, arg3, sets);\n var srcState = atn.states[src];\n srcState.addTransition(trans);\n }\n // edges for rule stop states can be derived, so they aren't serialized\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for (j=0; j<state.transitions.length; j++) {\n var t = state.transitions[j];\n if (!(t instanceof RuleTransition)) {\n continue;\n }\n\t\t\tvar outermostPrecedenceReturn = -1;\n\t\t\tif (atn.ruleToStartState[t.target.ruleIndex].isPrecedenceRule) {\n\t\t\t\tif (t.precedence === 0) {\n\t\t\t\t\toutermostPrecedenceReturn = t.target.ruleIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttrans = new EpsilonTransition(t.followState, outermostPrecedenceReturn);\n atn.ruleToStopState[t.target.ruleIndex].addTransition(trans);\n }\n }\n\n for (i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (state instanceof BlockStartState) {\n // we need to know the end state to set its start state\n if (state.endState === null) {\n throw (\"IllegalState\");\n }\n // block end states can only be associated to a single block start\n\t\t\t// state\n if ( state.endState.startState !== null) {\n throw (\"IllegalState\");\n }\n state.endState.startState = state;\n }\n if (state instanceof PlusLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof PlusBlockStartState) {\n target.loopBackState = state;\n }\n }\n } else if (state instanceof StarLoopbackState) {\n for (j=0; j<state.transitions.length; j++) {\n target = state.transitions[j].target;\n if (target instanceof StarLoopEntryState) {\n target.loopBackState = state;\n }\n }\n }\n }\n};\n\nATNDeserializer.prototype.readDecisions = function(atn) {\n var ndecisions = this.readInt();\n for (var i=0; i<ndecisions; i++) {\n var s = this.readInt();\n var decState = atn.states[s];\n atn.decisionToState.push(decState);\n decState.decision = i;\n }\n};\n\nATNDeserializer.prototype.readLexerActions = function(atn) {\n if (atn.grammarType === ATNType.LEXER) {\n var count = this.readInt();\n atn.lexerActions = initArray(count, null);\n for (var i=0; i<count; i++) {\n var actionType = this.readInt();\n var data1 = this.readInt();\n if (data1 === 0xFFFF) {\n data1 = -1;\n }\n var data2 = this.readInt();\n if (data2 === 0xFFFF) {\n data2 = -1;\n }\n var lexerAction = this.lexerActionFactory(actionType, data1, data2);\n atn.lexerActions[i] = lexerAction;\n }\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransitions = function(atn) {\n\tvar i;\n var count = atn.ruleToStartState.length;\n for(i=0; i<count; i++) {\n atn.ruleToTokenType[i] = atn.maxTokenType + i + 1;\n }\n for(i=0; i<count; i++) {\n this.generateRuleBypassTransition(atn, i);\n }\n};\n\nATNDeserializer.prototype.generateRuleBypassTransition = function(atn, idx) {\n\tvar i, state;\n var bypassStart = new BasicBlockStartState();\n bypassStart.ruleIndex = idx;\n atn.addState(bypassStart);\n\n var bypassStop = new BlockEndState();\n bypassStop.ruleIndex = idx;\n atn.addState(bypassStop);\n\n bypassStart.endState = bypassStop;\n atn.defineDecisionState(bypassStart);\n\n bypassStop.startState = bypassStart;\n\n var excludeTransition = null;\n var endState = null;\n\n if (atn.ruleToStartState[idx].isPrecedenceRule) {\n // wrap from the beginning of the rule to the StarLoopEntryState\n endState = null;\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n if (this.stateIsEndStateFor(state, idx)) {\n endState = state;\n excludeTransition = state.loopBackState.transitions[0];\n break;\n }\n }\n if (excludeTransition === null) {\n throw (\"Couldn't identify final state of the precedence rule prefix section.\");\n }\n } else {\n endState = atn.ruleToStopState[idx];\n }\n\n // all non-excluded transitions that currently target end state need to\n\t// target blockEnd instead\n for(i=0; i<atn.states.length; i++) {\n state = atn.states[i];\n for(var j=0; j<state.transitions.length; j++) {\n var transition = state.transitions[j];\n if (transition === excludeTransition) {\n continue;\n }\n if (transition.target === endState) {\n transition.target = bypassStop;\n }\n }\n }\n\n // all transitions leaving the rule start state need to leave blockStart\n\t// instead\n var ruleToStartState = atn.ruleToStartState[idx];\n var count = ruleToStartState.transitions.length;\n while ( count > 0) {\n bypassStart.addTransition(ruleToStartState.transitions[count-1]);\n ruleToStartState.transitions = ruleToStartState.transitions.slice(-1);\n }\n // link the new states\n atn.ruleToStartState[idx].addTransition(new EpsilonTransition(bypassStart));\n bypassStop.addTransition(new EpsilonTransition(endState));\n\n var matchState = new BasicState();\n atn.addState(matchState);\n matchState.addTransition(new AtomTransition(bypassStop, atn.ruleToTokenType[idx]));\n bypassStart.addTransition(new EpsilonTransition(matchState));\n};\n\nATNDeserializer.prototype.stateIsEndStateFor = function(state, idx) {\n if ( state.ruleIndex !== idx) {\n return null;\n }\n if (!( state instanceof StarLoopEntryState)) {\n return null;\n }\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (!( maybeLoopEndState instanceof LoopEndState)) {\n return null;\n }\n if (maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n return state;\n } else {\n return null;\n }\n};\n\n//\n// Analyze the {@link StarLoopEntryState} states in the specified ATN to set\n// the {@link StarLoopEntryState//isPrecedenceDecision} field to the\n// correct value.\n//\n// @param atn The ATN.\n//\nATNDeserializer.prototype.markPrecedenceDecisions = function(atn) {\n\tfor(var i=0; i<atn.states.length; i++) {\n\t\tvar state = atn.states[i];\n\t\tif (!( state instanceof StarLoopEntryState)) {\n continue;\n }\n // We analyze the ATN to determine if this ATN decision state is the\n // decision for the closure block that determines whether a\n // precedence rule should continue or complete.\n //\n if ( atn.ruleToStartState[state.ruleIndex].isPrecedenceRule) {\n var maybeLoopEndState = state.transitions[state.transitions.length - 1].target;\n if (maybeLoopEndState instanceof LoopEndState) {\n if ( maybeLoopEndState.epsilonOnlyTransitions &&\n (maybeLoopEndState.transitions[0].target instanceof RuleStopState)) {\n state.isPrecedenceDecision = true;\n }\n }\n }\n\t}\n};\n\nATNDeserializer.prototype.verifyATN = function(atn) {\n if (!this.deserializationOptions.verifyATN) {\n return;\n }\n // verify assumptions\n\tfor(var i=0; i<atn.states.length; i++) {\n var state = atn.states[i];\n if (state === null) {\n continue;\n }\n this.checkCondition(state.epsilonOnlyTransitions || state.transitions.length <= 1);\n if (state instanceof PlusBlockStartState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof StarLoopEntryState) {\n this.checkCondition(state.loopBackState !== null);\n this.checkCondition(state.transitions.length === 2);\n if (state.transitions[0].target instanceof StarBlockStartState) {\n this.checkCondition(state.transitions[1].target instanceof LoopEndState);\n this.checkCondition(!state.nonGreedy);\n } else if (state.transitions[0].target instanceof LoopEndState) {\n this.checkCondition(state.transitions[1].target instanceof StarBlockStartState);\n this.checkCondition(state.nonGreedy);\n } else {\n throw(\"IllegalState\");\n }\n } else if (state instanceof StarLoopbackState) {\n this.checkCondition(state.transitions.length === 1);\n this.checkCondition(state.transitions[0].target instanceof StarLoopEntryState);\n } else if (state instanceof LoopEndState) {\n this.checkCondition(state.loopBackState !== null);\n } else if (state instanceof RuleStartState) {\n this.checkCondition(state.stopState !== null);\n } else if (state instanceof BlockStartState) {\n this.checkCondition(state.endState !== null);\n } else if (state instanceof BlockEndState) {\n this.checkCondition(state.startState !== null);\n } else if (state instanceof DecisionState) {\n this.checkCondition(state.transitions.length <= 1 || state.decision >= 0);\n } else {\n this.checkCondition(state.transitions.length <= 1 || (state instanceof RuleStopState));\n }\n\t}\n};\n\nATNDeserializer.prototype.checkCondition = function(condition, message) {\n if (!condition) {\n if (message === undefined || message===null) {\n message = \"IllegalState\";\n }\n throw (message);\n }\n};\n\nATNDeserializer.prototype.readInt = function() {\n return this.data[this.pos++];\n};\n\nATNDeserializer.prototype.readInt32 = function() {\n var low = this.readInt();\n var high = this.readInt();\n return low | (high << 16);\n};\n\nATNDeserializer.prototype.readLong = function() {\n var low = this.readInt32();\n var high = this.readInt32();\n return (low & 0x00000000FFFFFFFF) | (high << 32);\n};\n\nfunction createByteToHex() {\n\tvar bth = [];\n\tfor (var i = 0; i < 256; i++) {\n\t\tbth[i] = (i + 0x100).toString(16).substr(1).toUpperCase();\n\t}\n\treturn bth;\n}\n\nvar byteToHex = createByteToHex();\n\nATNDeserializer.prototype.readUUID = function() {\n\tvar bb = [];\n\tfor(var i=7;i>=0;i--) {\n\t\tvar int = this.readInt();\n\t\t/* jshint bitwise: false */\n\t\tbb[(2*i)+1] = int & 0xFF;\n\t\tbb[2*i] = (int >> 8) & 0xFF;\n\t}\n return byteToHex[bb[0]] + byteToHex[bb[1]] +\n byteToHex[bb[2]] + byteToHex[bb[3]] + '-' +\n byteToHex[bb[4]] + byteToHex[bb[5]] + '-' +\n byteToHex[bb[6]] + byteToHex[bb[7]] + '-' +\n byteToHex[bb[8]] + byteToHex[bb[9]] + '-' +\n byteToHex[bb[10]] + byteToHex[bb[11]] +\n byteToHex[bb[12]] + byteToHex[bb[13]] +\n byteToHex[bb[14]] + byteToHex[bb[15]];\n};\n\nATNDeserializer.prototype.edgeFactory = function(atn, type, src, trg, arg1, arg2, arg3, sets) {\n var target = atn.states[trg];\n switch(type) {\n case Transition.EPSILON:\n return new EpsilonTransition(target);\n case Transition.RANGE:\n return arg3 !== 0 ? new RangeTransition(target, Token.EOF, arg2) : new RangeTransition(target, arg1, arg2);\n case Transition.RULE:\n return new RuleTransition(atn.states[arg1], arg2, arg3, target);\n case Transition.PREDICATE:\n return new PredicateTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.PRECEDENCE:\n return new PrecedencePredicateTransition(target, arg1);\n case Transition.ATOM:\n return arg3 !== 0 ? new AtomTransition(target, Token.EOF) : new AtomTransition(target, arg1);\n case Transition.ACTION:\n return new ActionTransition(target, arg1, arg2, arg3 !== 0);\n case Transition.SET:\n return new SetTransition(target, sets[arg1]);\n case Transition.NOT_SET:\n return new NotSetTransition(target, sets[arg1]);\n case Transition.WILDCARD:\n return new WildcardTransition(target);\n default:\n throw \"The specified transition type: \" + type + \" is not valid.\";\n }\n};\n\nATNDeserializer.prototype.stateFactory = function(type, ruleIndex) {\n if (this.stateFactories === null) {\n var sf = [];\n sf[ATNState.INVALID_TYPE] = null;\n sf[ATNState.BASIC] = function() { return new BasicState(); };\n sf[ATNState.RULE_START] = function() { return new RuleStartState(); };\n sf[ATNState.BLOCK_START] = function() { return new BasicBlockStartState(); };\n sf[ATNState.PLUS_BLOCK_START] = function() { return new PlusBlockStartState(); };\n sf[ATNState.STAR_BLOCK_START] = function() { return new StarBlockStartState(); };\n sf[ATNState.TOKEN_START] = function() { return new TokensStartState(); };\n sf[ATNState.RULE_STOP] = function() { return new RuleStopState(); };\n sf[ATNState.BLOCK_END] = function() { return new BlockEndState(); };\n sf[ATNState.STAR_LOOP_BACK] = function() { return new StarLoopbackState(); };\n sf[ATNState.STAR_LOOP_ENTRY] = function() { return new StarLoopEntryState(); };\n sf[ATNState.PLUS_LOOP_BACK] = function() { return new PlusLoopbackState(); };\n sf[ATNState.LOOP_END] = function() { return new LoopEndState(); };\n this.stateFactories = sf;\n }\n if (type>this.stateFactories.length || this.stateFactories[type] === null) {\n throw(\"The specified state type \" + type + \" is not valid.\");\n } else {\n var s = this.stateFactories[type]();\n if (s!==null) {\n s.ruleIndex = ruleIndex;\n return s;\n }\n }\n};\n\nATNDeserializer.prototype.lexerActionFactory = function(type, data1, data2) {\n if (this.actionFactories === null) {\n var af = [];\n af[LexerActionType.CHANNEL] = function(data1, data2) { return new LexerChannelAction(data1); };\n af[LexerActionType.CUSTOM] = function(data1, data2) { return new LexerCustomAction(data1, data2); };\n af[LexerActionType.MODE] = function(data1, data2) { return new LexerModeAction(data1); };\n af[LexerActionType.MORE] = function(data1, data2) { return LexerMoreAction.INSTANCE; };\n af[LexerActionType.POP_MODE] = function(data1, data2) { return LexerPopModeAction.INSTANCE; };\n af[LexerActionType.PUSH_MODE] = function(data1, data2) { return new LexerPushModeAction(data1); };\n af[LexerActionType.SKIP] = function(data1, data2) { return LexerSkipAction.INSTANCE; };\n af[LexerActionType.TYPE] = function(data1, data2) { return new LexerTypeAction(data1); };\n this.actionFactories = af;\n }\n if (type>this.actionFactories.length || this.actionFactories[type] === null) {\n throw(\"The specified lexer action type \" + type + \" is not valid.\");\n } else {\n return this.actionFactories[type](data1, data2);\n }\n};\n\n\nexports.ATNDeserializer = ATNDeserializer;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar getCachedPredictionContext = require('./../PredictionContext').getCachedPredictionContext;\nvar Map = require('./../Utils').Map;\n\nfunction ATNSimulator(atn, sharedContextCache) {\n\n // The context cache maps all PredictionContext objects that are ==\n // to a single cached copy. This cache is shared across all contexts\n // in all ATNConfigs in all DFA states. We rebuild each ATNConfigSet\n // to use only cached nodes/graphs in addDFAState(). We don't want to\n // fill this during closure() since there are lots of contexts that\n // pop up but are not used ever again. It also greatly slows down closure().\n //\n // <p>This cache makes a huge difference in memory and a little bit in speed.\n // For the Java grammar on java.*, it dropped the memory requirements\n // at the end from 25M to 16M. We don't store any of the full context\n // graphs in the DFA because they are limited to local context only,\n // but apparently there's a lot of repetition there as well. We optimize\n // the config contexts before storing the config set in the DFA states\n // by literally rebuilding them with cached subgraphs only.</p>\n //\n // <p>I tried a cache for use during closure operations, that was\n // whacked after each adaptivePredict(). It cost a little bit\n // more time I think and doesn't save on the overall footprint\n // so it's not worth the complexity.</p>\n ///\n this.atn = atn;\n this.sharedContextCache = sharedContextCache;\n return this;\n}\n\n// Must distinguish between missing edge and edge we know leads nowhere///\nATNSimulator.ERROR = new DFAState(0x7FFFFFFF, new ATNConfigSet());\n\n\nATNSimulator.prototype.getCachedContext = function(context) {\n if (this.sharedContextCache ===null) {\n return context;\n }\n var visited = new Map();\n return getCachedPredictionContext(context, this.sharedContextCache, visited);\n};\n\nexports.ATNSimulator = ATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// The following images show the relation of states and\n// {@link ATNState//transitions} for various grammar constructs.\n//\n// <ul>\n//\n// <li>Solid edges marked with an &//0949; indicate a required\n// {@link EpsilonTransition}.</li>\n//\n// <li>Dashed edges indicate locations where any transition derived from\n// {@link Transition} might appear.</li>\n//\n// <li>Dashed nodes are place holders for either a sequence of linked\n// {@link BasicState} states or the inclusion of a block representing a nested\n// construct in one of the forms below.</li>\n//\n// <li>Nodes showing multiple outgoing alternatives with a {@code ...} support\n// any number of alternatives (one or more). Nodes without the {@code ...} only\n// support the exact number of alternatives shown in the diagram.</li>\n//\n// </ul>\n//\n// <h2>Basic Blocks</h2>\n//\n// <h3>Rule</h3>\n//\n// <embed src=\"images/Rule.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Block of 1 or more alternatives</h3>\n//\n// <embed src=\"images/Block.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Greedy Loops</h2>\n//\n// <h3>Greedy Closure: {@code (...)*}</h3>\n//\n// <embed src=\"images/ClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Positive Closure: {@code (...)+}</h3>\n//\n// <embed src=\"images/PositiveClosureGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Greedy Optional: {@code (...)?}</h3>\n//\n// <embed src=\"images/OptionalGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h2>Non-Greedy Loops</h2>\n//\n// <h3>Non-Greedy Closure: {@code (...)*?}</h3>\n//\n// <embed src=\"images/ClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Positive Closure: {@code (...)+?}</h3>\n//\n// <embed src=\"images/PositiveClosureNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n// <h3>Non-Greedy Optional: {@code (...)??}</h3>\n//\n// <embed src=\"images/OptionalNonGreedy.svg\" type=\"image/svg+xml\"/>\n//\n\nvar INITIAL_NUM_TRANSITIONS = 4;\n\nfunction ATNState() {\n // Which ATN are we in?\n this.atn = null;\n this.stateNumber = ATNState.INVALID_STATE_NUMBER;\n this.stateType = null;\n this.ruleIndex = 0; // at runtime, we don't have Rule objects\n this.epsilonOnlyTransitions = false;\n // Track the transitions emanating from this ATN state.\n this.transitions = [];\n // Used to cache lookahead during parsing, not used during construction\n this.nextTokenWithinRule = null;\n return this;\n}\n\n// constants for serialization\nATNState.INVALID_TYPE = 0;\nATNState.BASIC = 1;\nATNState.RULE_START = 2;\nATNState.BLOCK_START = 3;\nATNState.PLUS_BLOCK_START = 4;\nATNState.STAR_BLOCK_START = 5;\nATNState.TOKEN_START = 6;\nATNState.RULE_STOP = 7;\nATNState.BLOCK_END = 8;\nATNState.STAR_LOOP_BACK = 9;\nATNState.STAR_LOOP_ENTRY = 10;\nATNState.PLUS_LOOP_BACK = 11;\nATNState.LOOP_END = 12;\n\nATNState.serializationNames = [\n \"INVALID\",\n \"BASIC\",\n \"RULE_START\",\n \"BLOCK_START\",\n \"PLUS_BLOCK_START\",\n \"STAR_BLOCK_START\",\n \"TOKEN_START\",\n \"RULE_STOP\",\n \"BLOCK_END\",\n \"STAR_LOOP_BACK\",\n \"STAR_LOOP_ENTRY\",\n \"PLUS_LOOP_BACK\",\n \"LOOP_END\" ];\n\nATNState.INVALID_STATE_NUMBER = -1;\n\nATNState.prototype.toString = function() {\n\treturn this.stateNumber;\n};\n\nATNState.prototype.equals = function(other) {\n if (other instanceof ATNState) {\n return this.stateNumber===other.stateNumber;\n } else {\n return false;\n }\n};\n\nATNState.prototype.isNonGreedyExitState = function() {\n return false;\n};\n\n\nATNState.prototype.addTransition = function(trans, index) {\n\tif(index===undefined) {\n\t\tindex = -1;\n\t}\n if (this.transitions.length===0) {\n this.epsilonOnlyTransitions = trans.isEpsilon;\n } else if(this.epsilonOnlyTransitions !== trans.isEpsilon) {\n this.epsilonOnlyTransitions = false;\n }\n if (index===-1) {\n this.transitions.push(trans);\n } else {\n this.transitions.splice(index, 1, trans);\n }\n};\n\nfunction BasicState() {\n\tATNState.call(this);\n this.stateType = ATNState.BASIC;\n return this;\n}\n\nBasicState.prototype = Object.create(ATNState.prototype);\nBasicState.prototype.constructor = BasicState;\n\n\nfunction DecisionState() {\n\tATNState.call(this);\n this.decision = -1;\n this.nonGreedy = false;\n return this;\n}\n\nDecisionState.prototype = Object.create(ATNState.prototype);\nDecisionState.prototype.constructor = DecisionState;\n\n\n// The start of a regular {@code (...)} block.\nfunction BlockStartState() {\n\tDecisionState.call(this);\n\tthis.endState = null;\n\treturn this;\n}\n\nBlockStartState.prototype = Object.create(DecisionState.prototype);\nBlockStartState.prototype.constructor = BlockStartState;\n\n\nfunction BasicBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.BLOCK_START;\n\treturn this;\n}\n\nBasicBlockStartState.prototype = Object.create(BlockStartState.prototype);\nBasicBlockStartState.prototype.constructor = BasicBlockStartState;\n\n\n// Terminal node of a simple {@code (a|b|c)} block.\nfunction BlockEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.BLOCK_END;\n this.startState = null;\n return this;\n}\n\nBlockEndState.prototype = Object.create(ATNState.prototype);\nBlockEndState.prototype.constructor = BlockEndState;\n\n\n// The last node in the ATN for a rule, unless that rule is the start symbol.\n// In that case, there is one transition to EOF. Later, we might encode\n// references to all calls to this rule to compute FOLLOW sets for\n// error handling.\n//\nfunction RuleStopState() {\n\tATNState.call(this);\n this.stateType = ATNState.RULE_STOP;\n return this;\n}\n\nRuleStopState.prototype = Object.create(ATNState.prototype);\nRuleStopState.prototype.constructor = RuleStopState;\n\nfunction RuleStartState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.RULE_START;\n\tthis.stopState = null;\n\tthis.isPrecedenceRule = false;\n\treturn this;\n}\n\nRuleStartState.prototype = Object.create(ATNState.prototype);\nRuleStartState.prototype.constructor = RuleStartState;\n\n// Decision state for {@code A+} and {@code (A|B)+}. It has two transitions:\n// one to the loop back to start of the block and one to exit.\n//\nfunction PlusLoopbackState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.PLUS_LOOP_BACK;\n\treturn this;\n}\n\nPlusLoopbackState.prototype = Object.create(DecisionState.prototype);\nPlusLoopbackState.prototype.constructor = PlusLoopbackState;\n\n\n// Start of {@code (A|B|...)+} loop. Technically a decision state, but\n// we don't use for code generation; somebody might need it, so I'm defining\n// it for completeness. In reality, the {@link PlusLoopbackState} node is the\n// real decision-making note for {@code A+}.\n//\nfunction PlusBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.PLUS_BLOCK_START;\n this.loopBackState = null;\n return this;\n}\n\nPlusBlockStartState.prototype = Object.create(BlockStartState.prototype);\nPlusBlockStartState.prototype.constructor = PlusBlockStartState;\n\n// The block that begins a closure loop.\nfunction StarBlockStartState() {\n\tBlockStartState.call(this);\n\tthis.stateType = ATNState.STAR_BLOCK_START;\n\treturn this;\n}\n\nStarBlockStartState.prototype = Object.create(BlockStartState.prototype);\nStarBlockStartState.prototype.constructor = StarBlockStartState;\n\n\nfunction StarLoopbackState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_BACK;\n\treturn this;\n}\n\nStarLoopbackState.prototype = Object.create(ATNState.prototype);\nStarLoopbackState.prototype.constructor = StarLoopbackState;\n\n\nfunction StarLoopEntryState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.STAR_LOOP_ENTRY;\n this.loopBackState = null;\n // Indicates whether this state can benefit from a precedence DFA during SLL decision making.\n this.isPrecedenceDecision = null;\n return this;\n}\n\nStarLoopEntryState.prototype = Object.create(DecisionState.prototype);\nStarLoopEntryState.prototype.constructor = StarLoopEntryState;\n\n\n// Mark the end of a * or + loop.\nfunction LoopEndState() {\n\tATNState.call(this);\n\tthis.stateType = ATNState.LOOP_END;\n\tthis.loopBackState = null;\n\treturn this;\n}\n\nLoopEndState.prototype = Object.create(ATNState.prototype);\nLoopEndState.prototype.constructor = LoopEndState;\n\n\n// The Tokens rule start state linking to each lexer rule start state */\nfunction TokensStartState() {\n\tDecisionState.call(this);\n\tthis.stateType = ATNState.TOKEN_START;\n\treturn this;\n}\n\nTokensStartState.prototype = Object.create(DecisionState.prototype);\nTokensStartState.prototype.constructor = TokensStartState;\n\nexports.ATNState = ATNState;\nexports.BasicState = BasicState;\nexports.DecisionState = DecisionState;\nexports.BlockStartState = BlockStartState;\nexports.BlockEndState = BlockEndState;\nexports.LoopEndState = LoopEndState;\nexports.RuleStartState = RuleStartState;\nexports.RuleStopState = RuleStopState;\nexports.TokensStartState = TokensStartState;\nexports.PlusLoopbackState = PlusLoopbackState;\nexports.StarLoopbackState = StarLoopbackState;\nexports.StarLoopEntryState = StarLoopEntryState;\nexports.PlusBlockStartState = PlusBlockStartState;\nexports.StarBlockStartState = StarBlockStartState;\nexports.BasicBlockStartState = BasicBlockStartState;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents the type of recognizer an ATN applies to.\n\nfunction ATNType() {\n\n}\n\nATNType.LEXER = 0;\nATNType.PARSER = 1;\n\nexports.ATNType = ATNType;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// When we hit an accept state in either the DFA or the ATN, we\n// have to notify the character stream to start buffering characters\n// via {@link IntStream//mark} and record the current state. The current sim state\n// includes the current index into the input, the current line,\n// and current character position in that line. Note that the Lexer is\n// tracking the starting line and characterization of the token. These\n// variables track the \"state\" of the simulator when it hits an accept state.\n//\n// <p>We track these variables separately for the DFA and ATN simulation\n// because the DFA simulation often has to fail over to the ATN\n// simulation. If the ATN simulation fails, we need the DFA to fall\n// back to its previously accepted state, if any. If the ATN succeeds,\n// then the ATN does the accept and the DFA simulator that invoked it\n// can simply return the predicted token type.</p>\n///\n\nvar Token = require('./../Token').Token;\nvar Lexer = require('./../Lexer').Lexer;\nvar ATN = require('./ATN').ATN;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar OrderedATNConfigSet = require('./ATNConfigSet').OrderedATNConfigSet;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar LexerATNConfig = require('./ATNConfig').LexerATNConfig;\nvar Transition = require('./Transition').Transition;\nvar LexerActionExecutor = require('./LexerActionExecutor').LexerActionExecutor;\nvar LexerNoViableAltException = require('./../error/Errors').LexerNoViableAltException;\n\nfunction resetSimState(sim) {\n\tsim.index = -1;\n\tsim.line = 0;\n\tsim.column = -1;\n\tsim.dfaState = null;\n}\n\nfunction SimState() {\n\tresetSimState(this);\n\treturn this;\n}\n\nSimState.prototype.reset = function() {\n\tresetSimState(this);\n};\n\nfunction LexerATNSimulator(recog, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n\tthis.decisionToDFA = decisionToDFA;\n\tthis.recog = recog;\n\t// The current token's starting index into the character stream.\n\t// Shared across DFA to ATN simulation in case the ATN fails and the\n\t// DFA did not have a previous accept state. In this case, we use the\n\t// ATN-generated exception object.\n\tthis.startIndex = -1;\n\t// line number 1..n within the input///\n\tthis.line = 1;\n\t// The index of the character relative to the beginning of the line\n\t// 0..n-1///\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n\t// Used during DFA/ATN exec to record the most recent accept configuration\n\t// info\n\tthis.prevAccept = new SimState();\n\t// done\n\treturn this;\n}\n\nLexerATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nLexerATNSimulator.prototype.constructor = LexerATNSimulator;\n\nLexerATNSimulator.debug = false;\nLexerATNSimulator.dfa_debug = false;\n\nLexerATNSimulator.MIN_DFA_EDGE = 0;\nLexerATNSimulator.MAX_DFA_EDGE = 127; // forces unicode to stay in ATN\n\nLexerATNSimulator.match_calls = 0;\n\nLexerATNSimulator.prototype.copyState = function(simulator) {\n\tthis.column = simulator.column;\n\tthis.line = simulator.line;\n\tthis.mode = simulator.mode;\n\tthis.startIndex = simulator.startIndex;\n};\n\nLexerATNSimulator.prototype.match = function(input, mode) {\n\tthis.match_calls += 1;\n\tthis.mode = mode;\n\tvar mark = input.mark();\n\ttry {\n\t\tthis.startIndex = input.index;\n\t\tthis.prevAccept.reset();\n\t\tvar dfa = this.decisionToDFA[mode];\n\t\tif (dfa.s0 === null) {\n\t\t\treturn this.matchATN(input);\n\t\t} else {\n\t\t\treturn this.execATN(input, dfa.s0);\n\t\t}\n\t} finally {\n\t\tinput.release(mark);\n\t}\n};\n\nLexerATNSimulator.prototype.reset = function() {\n\tthis.prevAccept.reset();\n\tthis.startIndex = -1;\n\tthis.line = 1;\n\tthis.column = 0;\n\tthis.mode = Lexer.DEFAULT_MODE;\n};\n\nLexerATNSimulator.prototype.matchATN = function(input) {\n\tvar startState = this.atn.modeToStartState[this.mode];\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"matchATN mode \" + this.mode + \" start: \" + startState);\n\t}\n\tvar old_mode = this.mode;\n\tvar s0_closure = this.computeStartState(input, startState);\n\tvar suppressEdge = s0_closure.hasSemanticContext;\n\ts0_closure.hasSemanticContext = false;\n\n\tvar next = this.addDFAState(s0_closure);\n\tif (!suppressEdge) {\n\t\tthis.decisionToDFA[this.mode].s0 = next;\n\t}\n\n\tvar predict = this.execATN(input, next);\n\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"DFA after matchATN: \" + this.decisionToDFA[old_mode].toLexerString());\n\t}\n\treturn predict;\n};\n\nLexerATNSimulator.prototype.execATN = function(input, ds0) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"start state closure=\" + ds0.configs);\n\t}\n\tif (ds0.isAcceptState) {\n\t\t// allow zero-length tokens\n\t\tthis.captureSimState(this.prevAccept, input, ds0);\n\t}\n\tvar t = input.LA(1);\n\tvar s = ds0; // s is current/from DFA state\n\n\twhile (true) { // while more work\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"execATN loop starting closure: \" + s.configs);\n\t\t}\n\n\t\t// As we move src->trg, src->trg, we keep track of the previous trg to\n\t\t// avoid looking up the DFA state again, which is expensive.\n\t\t// If the previous target was already part of the DFA, we might\n\t\t// be able to avoid doing a reach operation upon t. If s!=null,\n\t\t// it means that semantic predicates didn't prevent us from\n\t\t// creating a DFA state. Once we know s!=null, we check to see if\n\t\t// the DFA state has an edge already for t. If so, we can just reuse\n\t\t// it's configuration set; there's no point in re-computing it.\n\t\t// This is kind of like doing DFA simulation within the ATN\n\t\t// simulation because DFA simulation is really just a way to avoid\n\t\t// computing reach/closure sets. Technically, once we know that\n\t\t// we have a previously added DFA state, we could jump over to\n\t\t// the DFA simulator. But, that would mean popping back and forth\n\t\t// a lot and making things more complicated algorithmically.\n\t\t// This optimization makes a lot of sense for loops within DFA.\n\t\t// A character will take us back to an existing DFA state\n\t\t// that already has lots of edges out of it. e.g., .* in comments.\n\t\t// print(\"Target for:\" + str(s) + \" and:\" + str(t))\n\t\tvar target = this.getExistingTargetState(s, t);\n\t\t// print(\"Existing:\" + str(target))\n\t\tif (target === null) {\n\t\t\ttarget = this.computeTargetState(input, s, t);\n\t\t\t// print(\"Computed:\" + str(target))\n\t\t}\n\t\tif (target === ATNSimulator.ERROR) {\n\t\t\tbreak;\n\t\t}\n\t\t// If this is a consumable input element, make sure to consume before\n\t\t// capturing the accept state so the input index, line, and char\n\t\t// position accurately reflect the state of the interpreter at the\n\t\t// end of the token.\n\t\tif (t !== Token.EOF) {\n\t\t\tthis.consume(input);\n\t\t}\n\t\tif (target.isAcceptState) {\n\t\t\tthis.captureSimState(this.prevAccept, input, target);\n\t\t\tif (t === Token.EOF) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tt = input.LA(1);\n\t\ts = target; // flip; current DFA target becomes new src/from state\n\t}\n\treturn this.failOrAccept(this.prevAccept, input, s.configs, t);\n};\n\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param s The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\nLexerATNSimulator.prototype.getExistingTargetState = function(s, t) {\n\tif (s.edges === null || t < LexerATNSimulator.MIN_DFA_EDGE || t > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\treturn null;\n\t}\n\n\tvar target = s.edges[t - LexerATNSimulator.MIN_DFA_EDGE];\n\tif(target===undefined) {\n\t\ttarget = null;\n\t}\n\tif (LexerATNSimulator.debug && target !== null) {\n\t\tconsole.log(\"reuse state \" + s.stateNumber + \" edge to \" + target.stateNumber);\n\t}\n\treturn target;\n};\n\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param input The input stream\n// @param s The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\nLexerATNSimulator.prototype.computeTargetState = function(input, s, t) {\n\tvar reach = new OrderedATNConfigSet();\n\t// if we don't find an existing DFA state\n\t// Fill reach starting from closure, following t transitions\n\tthis.getReachableConfigSet(input, s.configs, reach, t);\n\n\tif (reach.items.length === 0) { // we got nowhere on t from s\n\t\tif (!reach.hasSemanticContext) {\n\t\t\t// we got nowhere on t, don't throw out this knowledge; it'd\n\t\t\t// cause a failover from DFA later.\n\t\t\tthis.addDFAEdge(s, t, ATNSimulator.ERROR);\n\t\t}\n\t\t// stop when we can't match any more char\n\t\treturn ATNSimulator.ERROR;\n\t}\n\t// Add an edge from s to target DFA found/created for reach\n\treturn this.addDFAEdge(s, t, null, reach);\n};\n\nLexerATNSimulator.prototype.failOrAccept = function(prevAccept, input, reach, t) {\n\tif (this.prevAccept.dfaState !== null) {\n\t\tvar lexerActionExecutor = prevAccept.dfaState.lexerActionExecutor;\n\t\tthis.accept(input, lexerActionExecutor, this.startIndex,\n\t\t\t\tprevAccept.index, prevAccept.line, prevAccept.column);\n\t\treturn prevAccept.dfaState.prediction;\n\t} else {\n\t\t// if no accept and EOF is first char, return EOF\n\t\tif (t === Token.EOF && input.index === this.startIndex) {\n\t\t\treturn Token.EOF;\n\t\t}\n\t\tthrow new LexerNoViableAltException(this.recog, input, this.startIndex, reach);\n\t}\n};\n\n// Given a starting configuration set, figure out all ATN configurations\n// we can reach upon input {@code t}. Parameter {@code reach} is a return\n// parameter.\nLexerATNSimulator.prototype.getReachableConfigSet = function(input, closure,\n\t\treach, t) {\n\t// this is used to skip processing for configs which have a lower priority\n\t// than a config that already reached an accept state for the same rule\n\tvar skipAlt = ATN.INVALID_ALT_NUMBER;\n\tfor (var i = 0; i < closure.items.length; i++) {\n\t\tvar cfg = closure.items[i];\n\t\tvar currentAltReachedAcceptState = (cfg.alt === skipAlt);\n\t\tif (currentAltReachedAcceptState && cfg.passedThroughNonGreedyDecision) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"testing %s at %s\\n\", this.getTokenName(t), cfg\n\t\t\t\t\t.toString(this.recog, true));\n\t\t}\n\t\tfor (var j = 0; j < cfg.state.transitions.length; j++) {\n\t\t\tvar trans = cfg.state.transitions[j]; // for each transition\n\t\t\tvar target = this.getReachableTarget(trans, t);\n\t\t\tif (target !== null) {\n\t\t\t\tvar lexerActionExecutor = cfg.lexerActionExecutor;\n\t\t\t\tif (lexerActionExecutor !== null) {\n\t\t\t\t\tlexerActionExecutor = lexerActionExecutor.fixOffsetBeforeMatch(input.index - this.startIndex);\n\t\t\t\t}\n\t\t\t\tvar treatEofAsEpsilon = (t === Token.EOF);\n\t\t\t\tvar config = new LexerATNConfig({state:target, lexerActionExecutor:lexerActionExecutor}, cfg);\n\t\t\t\tif (this.closure(input, config, reach,\n\t\t\t\t\t\tcurrentAltReachedAcceptState, true, treatEofAsEpsilon)) {\n\t\t\t\t\t// any remaining configs for this alt have a lower priority\n\t\t\t\t\t// than the one that just reached an accept state.\n\t\t\t\t\tskipAlt = cfg.alt;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nLexerATNSimulator.prototype.accept = function(input, lexerActionExecutor,\n\t\tstartIndex, index, line, charPos) {\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"ACTION %s\\n\", lexerActionExecutor);\n\t}\n\t// seek to after last char in token\n\tinput.seek(index);\n\tthis.line = line;\n\tthis.column = charPos;\n\tif (lexerActionExecutor !== null && this.recog !== null) {\n\t\tlexerActionExecutor.execute(this.recog, input, startIndex);\n\t}\n};\n\nLexerATNSimulator.prototype.getReachableTarget = function(trans, t) {\n\tif (trans.matches(t, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\treturn trans.target;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nLexerATNSimulator.prototype.computeStartState = function(input, p) {\n\tvar initialContext = PredictionContext.EMPTY;\n\tvar configs = new OrderedATNConfigSet();\n\tfor (var i = 0; i < p.transitions.length; i++) {\n\t\tvar target = p.transitions[i].target;\n var cfg = new LexerATNConfig({state:target, alt:i+1, context:initialContext}, null);\n\t\tthis.closure(input, cfg, configs, false, false, false);\n\t}\n\treturn configs;\n};\n\n// Since the alternatives within any lexer decision are ordered by\n// preference, this method stops pursuing the closure as soon as an accept\n// state is reached. After the first accept state is reached by depth-first\n// search from {@code config}, all other (potentially reachable) states for\n// this rule would have a lower priority.\n//\n// @return {@code true} if an accept state is reached, otherwise\n// {@code false}.\nLexerATNSimulator.prototype.closure = function(input, config, configs,\n\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"closure(\" + config.toString(this.recog, true) + \")\");\n\t}\n\tif (config.state instanceof RuleStopState) {\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tif (this.recog !== null) {\n\t\t\t\tconsole.log(\"closure at %s rule stop %s\\n\", this.recog.ruleNames[config.state.ruleIndex], config);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"closure at rule stop %s\\n\", config);\n\t\t\t}\n\t\t}\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\tif (config.context === null || config.context.isEmpty()) {\n\t\t\t\tconfigs.add(config);\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tconfigs.add(new LexerATNConfig({ state:config.state, context:PredictionContext.EMPTY}, config));\n\t\t\t\tcurrentAltReachedAcceptState = true;\n\t\t\t}\n\t\t}\n\t\tif (config.context !== null && !config.context.isEmpty()) {\n\t\t\tfor (var i = 0; i < config.context.length; i++) {\n\t\t\t\tif (config.context.getReturnState(i) !== PredictionContext.EMPTY_RETURN_STATE) {\n\t\t\t\t\tvar newContext = config.context.getParent(i); // \"pop\" return state\n\t\t\t\t\tvar returnState = this.atn.states[config.context.getReturnState(i)];\n\t\t\t\t\tcfg = new LexerATNConfig({ state:returnState, context:newContext }, config);\n\t\t\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg,\n\t\t\t\t\t\t\tconfigs, currentAltReachedAcceptState, speculative,\n\t\t\t\t\t\t\ttreatEofAsEpsilon);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn currentAltReachedAcceptState;\n\t}\n\t// optimization\n\tif (!config.state.epsilonOnlyTransitions) {\n\t\tif (!currentAltReachedAcceptState || !config.passedThroughNonGreedyDecision) {\n\t\t\tconfigs.add(config);\n\t\t}\n\t}\n\tfor (var j = 0; j < config.state.transitions.length; j++) {\n\t\tvar trans = config.state.transitions[j];\n\t\tcfg = this.getEpsilonTarget(input, config, trans, configs, speculative, treatEofAsEpsilon);\n\t\tif (cfg !== null) {\n\t\t\tcurrentAltReachedAcceptState = this.closure(input, cfg, configs,\n\t\t\t\t\tcurrentAltReachedAcceptState, speculative, treatEofAsEpsilon);\n\t\t}\n\t}\n\treturn currentAltReachedAcceptState;\n};\n\n// side-effect: can alter configs.hasSemanticContext\nLexerATNSimulator.prototype.getEpsilonTarget = function(input, config, trans,\n\t\tconfigs, speculative, treatEofAsEpsilon) {\n\tvar cfg = null;\n\tif (trans.serializationType === Transition.RULE) {\n\t\tvar newContext = SingletonPredictionContext.create(config.context, trans.followState.stateNumber);\n\t\tcfg = new LexerATNConfig( { state:trans.target, context:newContext}, config);\n\t} else if (trans.serializationType === Transition.PRECEDENCE) {\n\t\tthrow \"Precedence predicates are not supported in lexers.\";\n\t} else if (trans.serializationType === Transition.PREDICATE) {\n\t\t// Track traversing semantic predicates. If we traverse,\n\t\t// we cannot add a DFA state for this \"reach\" computation\n\t\t// because the DFA would not test the predicate again in the\n\t\t// future. Rather than creating collections of semantic predicates\n\t\t// like v3 and testing them on prediction, v4 will test them on the\n\t\t// fly all the time using the ATN not the DFA. This is slower but\n\t\t// semantically it's not used that often. One of the key elements to\n\t\t// this predicate mechanism is not adding DFA states that see\n\t\t// predicates immediately afterwards in the ATN. For example,\n\n\t\t// a : ID {p1}? | ID {p2}? ;\n\n\t\t// should create the start state for rule 'a' (to save start state\n\t\t// competition), but should not create target of ID state. The\n\t\t// collection of ATN states the following ID references includes\n\t\t// states reached by traversing predicates. Since this is when we\n\t\t// test them, we cannot cash the DFA state target of ID.\n\n\t\tif (LexerATNSimulator.debug) {\n\t\t\tconsole.log(\"EVAL rule \" + trans.ruleIndex + \":\" + trans.predIndex);\n\t\t}\n\t\tconfigs.hasSemanticContext = true;\n\t\tif (this.evaluatePredicate(input, trans.ruleIndex, trans.predIndex, speculative)) {\n\t\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.ACTION) {\n\t\tif (config.context === null || config.context.hasEmptyPath()) {\n\t\t\t// execute actions anywhere in the start rule for a token.\n\t\t\t//\n\t\t\t// TODO: if the entry rule is invoked recursively, some\n\t\t\t// actions may be executed during the recursive call. The\n\t\t\t// problem can appear when hasEmptyPath() is true but\n\t\t\t// isEmpty() is false. In this case, the config needs to be\n\t\t\t// split into two contexts - one with just the empty path\n\t\t\t// and another with everything but the empty path.\n\t\t\t// Unfortunately, the current algorithm does not allow\n\t\t\t// getEpsilonTarget to return two configurations, so\n\t\t\t// additional modifications are needed before we can support\n\t\t\t// the split operation.\n\t\t\tvar lexerActionExecutor = LexerActionExecutor.append(config.lexerActionExecutor,\n\t\t\t\t\tthis.atn.lexerActions[trans.actionIndex]);\n\t\t\tcfg = new LexerATNConfig({ state:trans.target, lexerActionExecutor:lexerActionExecutor }, config);\n\t\t} else {\n\t\t\t// ignore actions in referenced rules\n\t\t\tcfg = new LexerATNConfig( { state:trans.target}, config);\n\t\t}\n\t} else if (trans.serializationType === Transition.EPSILON) {\n\t\tcfg = new LexerATNConfig({ state:trans.target}, config);\n\t} else if (trans.serializationType === Transition.ATOM ||\n\t\t\t\ttrans.serializationType === Transition.RANGE ||\n\t\t\t\ttrans.serializationType === Transition.SET) {\n\t\tif (treatEofAsEpsilon) {\n\t\t\tif (trans.matches(Token.EOF, 0, Lexer.MAX_CHAR_VALUE)) {\n\t\t\t\tcfg = new LexerATNConfig( { state:trans.target }, config);\n\t\t\t}\n\t\t}\n\t}\n\treturn cfg;\n};\n\n// Evaluate a predicate specified in the lexer.\n//\n// <p>If {@code speculative} is {@code true}, this method was called before\n// {@link //consume} for the matched character. This method should call\n// {@link //consume} before evaluating the predicate to ensure position\n// sensitive values, including {@link Lexer//getText}, {@link Lexer//getLine},\n// and {@link Lexer//getcolumn}, properly reflect the current\n// lexer state. This method should restore {@code input} and the simulator\n// to the original state before returning (i.e. undo the actions made by the\n// call to {@link //consume}.</p>\n//\n// @param input The input stream.\n// @param ruleIndex The rule containing the predicate.\n// @param predIndex The index of the predicate within the rule.\n// @param speculative {@code true} if the current index in {@code input} is\n// one character before the predicate's location.\n//\n// @return {@code true} if the specified predicate evaluates to\n// {@code true}.\n// /\nLexerATNSimulator.prototype.evaluatePredicate = function(input, ruleIndex,\n\t\tpredIndex, speculative) {\n\t// assume true if no recognizer was provided\n\tif (this.recog === null) {\n\t\treturn true;\n\t}\n\tif (!speculative) {\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t}\n\tvar savedcolumn = this.column;\n\tvar savedLine = this.line;\n\tvar index = input.index;\n\tvar marker = input.mark();\n\ttry {\n\t\tthis.consume(input);\n\t\treturn this.recog.sempred(null, ruleIndex, predIndex);\n\t} finally {\n\t\tthis.column = savedcolumn;\n\t\tthis.line = savedLine;\n\t\tinput.seek(index);\n\t\tinput.release(marker);\n\t}\n};\n\nLexerATNSimulator.prototype.captureSimState = function(settings, input, dfaState) {\n\tsettings.index = input.index;\n\tsettings.line = this.line;\n\tsettings.column = this.column;\n\tsettings.dfaState = dfaState;\n};\n\nLexerATNSimulator.prototype.addDFAEdge = function(from_, tk, to, cfgs) {\n\tif (to === undefined) {\n\t\tto = null;\n\t}\n\tif (cfgs === undefined) {\n\t\tcfgs = null;\n\t}\n\tif (to === null && cfgs !== null) {\n\t\t// leading to this call, ATNConfigSet.hasSemanticContext is used as a\n\t\t// marker indicating dynamic predicate evaluation makes this edge\n\t\t// dependent on the specific input sequence, so the static edge in the\n\t\t// DFA should be omitted. The target DFAState is still created since\n\t\t// execATN has the ability to resynchronize with the DFA state cache\n\t\t// following the predicate evaluation step.\n\t\t//\n\t\t// TJP notes: next time through the DFA, we see a pred again and eval.\n\t\t// If that gets us to a previously created (but dangling) DFA\n\t\t// state, we can continue in pure DFA mode from there.\n\t\t// /\n\t\tvar suppressEdge = cfgs.hasSemanticContext;\n\t\tcfgs.hasSemanticContext = false;\n\n\t\tto = this.addDFAState(cfgs);\n\n\t\tif (suppressEdge) {\n\t\t\treturn to;\n\t\t}\n\t}\n\t// add the edge\n\tif (tk < LexerATNSimulator.MIN_DFA_EDGE || tk > LexerATNSimulator.MAX_DFA_EDGE) {\n\t\t// Only track edges within the DFA bounds\n\t\treturn to;\n\t}\n\tif (LexerATNSimulator.debug) {\n\t\tconsole.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + tk);\n\t}\n\tif (from_.edges === null) {\n\t\t// make room for tokens 1..n and -1 masquerading as index 0\n\t\tfrom_.edges = [];\n\t}\n\tfrom_.edges[tk - LexerATNSimulator.MIN_DFA_EDGE] = to; // connect\n\n\treturn to;\n};\n\n// Add a new DFA state if there isn't one with this set of\n// configurations already. This method also detects the first\n// configuration containing an ATN rule stop state. Later, when\n// traversing the DFA, we will know which rule to accept.\nLexerATNSimulator.prototype.addDFAState = function(configs) {\n\tvar proposed = new DFAState(null, configs);\n\tvar firstConfigWithRuleStopState = null;\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tvar cfg = configs.items[i];\n\t\tif (cfg.state instanceof RuleStopState) {\n\t\t\tfirstConfigWithRuleStopState = cfg;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (firstConfigWithRuleStopState !== null) {\n\t\tproposed.isAcceptState = true;\n\t\tproposed.lexerActionExecutor = firstConfigWithRuleStopState.lexerActionExecutor;\n\t\tproposed.prediction = this.atn.ruleToTokenType[firstConfigWithRuleStopState.state.ruleIndex];\n\t}\n\tvar dfa = this.decisionToDFA[this.mode];\n\tvar existing = dfa.states.get(proposed);\n\tif (existing!==null) {\n\t\treturn existing;\n\t}\n\tvar newState = proposed;\n\tnewState.stateNumber = dfa.states.length;\n\tconfigs.setReadonly(true);\n\tnewState.configs = configs;\n\tdfa.states.add(newState);\n\treturn newState;\n};\n\nLexerATNSimulator.prototype.getDFA = function(mode) {\n\treturn this.decisionToDFA[mode];\n};\n\n// Get the text matched so far for the current token.\nLexerATNSimulator.prototype.getText = function(input) {\n\t// index is first lookahead char, don't include.\n\treturn input.getText(this.startIndex, input.index - 1);\n};\n\nLexerATNSimulator.prototype.consume = function(input) {\n\tvar curChar = input.LA(1);\n\tif (curChar === \"\\n\".charCodeAt(0)) {\n\t\tthis.line += 1;\n\t\tthis.column = 0;\n\t} else {\n\t\tthis.column += 1;\n\t}\n\tinput.consume();\n};\n\nLexerATNSimulator.prototype.getTokenName = function(tt) {\n\tif (tt === -1) {\n\t\treturn \"EOF\";\n\t} else {\n\t\treturn \"'\" + String.fromCharCode(tt) + \"'\";\n\t}\n};\n\nexports.LexerATNSimulator = LexerATNSimulator;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n //\n\nfunction LexerActionType() {\n}\n\nLexerActionType.CHANNEL = 0; //The type of a {@link LexerChannelAction} action.\nLexerActionType.CUSTOM = 1; //The type of a {@link LexerCustomAction} action.\nLexerActionType.MODE = 2; //The type of a {@link LexerModeAction} action.\nLexerActionType.MORE = 3; //The type of a {@link LexerMoreAction} action.\nLexerActionType.POP_MODE = 4; //The type of a {@link LexerPopModeAction} action.\nLexerActionType.PUSH_MODE = 5; //The type of a {@link LexerPushModeAction} action.\nLexerActionType.SKIP = 6; //The type of a {@link LexerSkipAction} action.\nLexerActionType.TYPE = 7; //The type of a {@link LexerTypeAction} action.\n\nfunction LexerAction(action) {\n this.actionType = action;\n this.isPositionDependent = false;\n return this;\n}\n\nLexerAction.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish()\n};\n\nLexerAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType);\n};\n\nLexerAction.prototype.equals = function(other) {\n return this === other;\n};\n\n\n\n//\n// Implements the {@code skip} lexer action by calling {@link Lexer//skip}.\n//\n// <p>The {@code skip} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerSkipAction() {\n\tLexerAction.call(this, LexerActionType.SKIP);\n\treturn this;\n}\n\nLexerSkipAction.prototype = Object.create(LexerAction.prototype);\nLexerSkipAction.prototype.constructor = LexerSkipAction;\n\n// Provides a singleton instance of this parameterless lexer action.\nLexerSkipAction.INSTANCE = new LexerSkipAction();\n\nLexerSkipAction.prototype.execute = function(lexer) {\n lexer.skip();\n};\n\nLexerSkipAction.prototype.toString = function() {\n\treturn \"skip\";\n};\n\n// Implements the {@code type} lexer action by calling {@link Lexer//setType}\n// with the assigned type.\nfunction LexerTypeAction(type) {\n\tLexerAction.call(this, LexerActionType.TYPE);\n\tthis.type = type;\n\treturn this;\n}\n\nLexerTypeAction.prototype = Object.create(LexerAction.prototype);\nLexerTypeAction.prototype.constructor = LexerTypeAction;\n\nLexerTypeAction.prototype.execute = function(lexer) {\n lexer.type = this.type;\n};\n\nLexerTypeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.type);\n};\n\n\nLexerTypeAction.prototype.equals = function(other) {\n if(this === other) {\n return true;\n } else if (! (other instanceof LexerTypeAction)) {\n return false;\n } else {\n return this.type === other.type;\n }\n};\n\nLexerTypeAction.prototype.toString = function() {\n return \"type(\" + this.type + \")\";\n};\n\n// Implements the {@code pushMode} lexer action by calling\n// {@link Lexer//pushMode} with the assigned mode.\nfunction LexerPushModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.PUSH_MODE);\n this.mode = mode;\n return this;\n}\n\nLexerPushModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPushModeAction.prototype.constructor = LexerPushModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//pushMode} with the\n// value provided by {@link //getMode}.</p>\nLexerPushModeAction.prototype.execute = function(lexer) {\n lexer.pushMode(this.mode);\n};\n\nLexerPushModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerPushModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerPushModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerPushModeAction.prototype.toString = function() {\n\treturn \"pushMode(\" + this.mode + \")\";\n};\n\n\n// Implements the {@code popMode} lexer action by calling {@link Lexer//popMode}.\n//\n// <p>The {@code popMode} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerPopModeAction() {\n\tLexerAction.call(this,LexerActionType.POP_MODE);\n\treturn this;\n}\n\nLexerPopModeAction.prototype = Object.create(LexerAction.prototype);\nLexerPopModeAction.prototype.constructor = LexerPopModeAction;\n\nLexerPopModeAction.INSTANCE = new LexerPopModeAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerPopModeAction.prototype.execute = function(lexer) {\n lexer.popMode();\n};\n\nLexerPopModeAction.prototype.toString = function() {\n\treturn \"popMode\";\n};\n\n// Implements the {@code more} lexer action by calling {@link Lexer//more}.\n//\n// <p>The {@code more} command does not have any parameters, so this action is\n// implemented as a singleton instance exposed by {@link //INSTANCE}.</p>\nfunction LexerMoreAction() {\n\tLexerAction.call(this, LexerActionType.MORE);\n\treturn this;\n}\n\nLexerMoreAction.prototype = Object.create(LexerAction.prototype);\nLexerMoreAction.prototype.constructor = LexerMoreAction;\n\nLexerMoreAction.INSTANCE = new LexerMoreAction();\n\n// <p>This action is implemented by calling {@link Lexer//popMode}.</p>\nLexerMoreAction.prototype.execute = function(lexer) {\n lexer.more();\n};\n\nLexerMoreAction.prototype.toString = function() {\n return \"more\";\n};\n\n\n// Implements the {@code mode} lexer action by calling {@link Lexer//mode} with\n// the assigned mode.\nfunction LexerModeAction(mode) {\n\tLexerAction.call(this, LexerActionType.MODE);\n this.mode = mode;\n return this;\n}\n\nLexerModeAction.prototype = Object.create(LexerAction.prototype);\nLexerModeAction.prototype.constructor = LexerModeAction;\n\n// <p>This action is implemented by calling {@link Lexer//mode} with the\n// value provided by {@link //getMode}.</p>\nLexerModeAction.prototype.execute = function(lexer) {\n lexer.mode(this.mode);\n};\n\nLexerModeAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.mode);\n};\n\nLexerModeAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerModeAction)) {\n return false;\n } else {\n return this.mode === other.mode;\n }\n};\n\nLexerModeAction.prototype.toString = function() {\n return \"mode(\" + this.mode + \")\";\n};\n\n// Executes a custom lexer action by calling {@link Recognizer//action} with the\n// rule and action indexes assigned to the custom action. The implementation of\n// a custom action is added to the generated code for the lexer in an override\n// of {@link Recognizer//action} when the grammar is compiled.\n//\n// <p>This class may represent embedded actions created with the <code>{...}</code>\n// syntax in ANTLR 4, as well as actions created for lexer commands where the\n// command argument could not be evaluated when the grammar was compiled.</p>\n\n\n // Constructs a custom lexer action with the specified rule and action\n // indexes.\n //\n // @param ruleIndex The rule index to use for calls to\n // {@link Recognizer//action}.\n // @param actionIndex The action index to use for calls to\n // {@link Recognizer//action}.\n\nfunction LexerCustomAction(ruleIndex, actionIndex) {\n\tLexerAction.call(this, LexerActionType.CUSTOM);\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerCustomAction.prototype.constructor = LexerCustomAction;\n\n// <p>Custom actions are implemented by calling {@link Lexer//action} with the\n// appropriate rule and action indexes.</p>\nLexerCustomAction.prototype.execute = function(lexer) {\n lexer.action(null, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.ruleIndex, this.actionIndex);\n};\n\nLexerCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerCustomAction)) {\n return false;\n } else {\n return this.ruleIndex === other.ruleIndex && this.actionIndex === other.actionIndex;\n }\n};\n\n// Implements the {@code channel} lexer action by calling\n// {@link Lexer//setChannel} with the assigned channel.\n// Constructs a new {@code channel} action with the specified channel value.\n// @param channel The channel value to pass to {@link Lexer//setChannel}.\nfunction LexerChannelAction(channel) {\n\tLexerAction.call(this, LexerActionType.CHANNEL);\n this.channel = channel;\n return this;\n}\n\nLexerChannelAction.prototype = Object.create(LexerAction.prototype);\nLexerChannelAction.prototype.constructor = LexerChannelAction;\n\n// <p>This action is implemented by calling {@link Lexer//setChannel} with the\n// value provided by {@link //getChannel}.</p>\nLexerChannelAction.prototype.execute = function(lexer) {\n lexer._channel = this.channel;\n};\n\nLexerChannelAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.channel);\n};\n\nLexerChannelAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerChannelAction)) {\n return false;\n } else {\n return this.channel === other.channel;\n }\n};\n\nLexerChannelAction.prototype.toString = function() {\n return \"channel(\" + this.channel + \")\";\n};\n\n// This implementation of {@link LexerAction} is used for tracking input offsets\n// for position-dependent actions within a {@link LexerActionExecutor}.\n//\n// <p>This action is not serialized as part of the ATN, and is only required for\n// position-dependent lexer actions which appear at a location other than the\n// end of a rule. For more information about DFA optimizations employed for\n// lexer actions, see {@link LexerActionExecutor//append} and\n// {@link LexerActionExecutor//fixOffsetBeforeMatch}.</p>\n\n// Constructs a new indexed custom action by associating a character offset\n// with a {@link LexerAction}.\n//\n// <p>Note: This class is only required for lexer actions for which\n// {@link LexerAction//isPositionDependent} returns {@code true}.</p>\n//\n// @param offset The offset into the input {@link CharStream}, relative to\n// the token start index, at which the specified lexer action should be\n// executed.\n// @param action The lexer action to execute at a particular offset in the\n// input {@link CharStream}.\nfunction LexerIndexedCustomAction(offset, action) {\n\tLexerAction.call(this, action.actionType);\n this.offset = offset;\n this.action = action;\n this.isPositionDependent = true;\n return this;\n}\n\nLexerIndexedCustomAction.prototype = Object.create(LexerAction.prototype);\nLexerIndexedCustomAction.prototype.constructor = LexerIndexedCustomAction;\n\n// <p>This method calls {@link //execute} on the result of {@link //getAction}\n// using the provided {@code lexer}.</p>\nLexerIndexedCustomAction.prototype.execute = function(lexer) {\n // assume the input stream position was properly set by the calling code\n this.action.execute(lexer);\n};\n\nLexerIndexedCustomAction.prototype.updateHashCode = function(hash) {\n hash.update(this.actionType, this.offset, this.action);\n};\n\nLexerIndexedCustomAction.prototype.equals = function(other) {\n if (this === other) {\n return true;\n } else if (! (other instanceof LexerIndexedCustomAction)) {\n return false;\n } else {\n return this.offset === other.offset && this.action === other.action;\n }\n};\n\n\nexports.LexerActionType = LexerActionType;\nexports.LexerSkipAction = LexerSkipAction;\nexports.LexerChannelAction = LexerChannelAction;\nexports.LexerCustomAction = LexerCustomAction;\nexports.LexerIndexedCustomAction = LexerIndexedCustomAction;\nexports.LexerMoreAction = LexerMoreAction;\nexports.LexerTypeAction = LexerTypeAction;\nexports.LexerPushModeAction = LexerPushModeAction;\nexports.LexerPopModeAction = LexerPopModeAction;\nexports.LexerModeAction = LexerModeAction;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// Represents an executor for a sequence of lexer actions which traversed during\n// the matching operation of a lexer rule (token).\n//\n// <p>The executor tracks position information for position-dependent lexer actions\n// efficiently, ensuring that actions appearing only at the end of the rule do\n// not cause bloating of the {@link DFA} created for the lexer.</p>\n\nvar hashStuff = require(\"../Utils\").hashStuff;\nvar LexerIndexedCustomAction = require('./LexerAction').LexerIndexedCustomAction;\n\nfunction LexerActionExecutor(lexerActions) {\n\tthis.lexerActions = lexerActions === null ? [] : lexerActions;\n\t// Caches the result of {@link //hashCode} since the hash code is an element\n\t// of the performance-critical {@link LexerATNConfig//hashCode} operation.\n\tthis.cachedHashCode = hashStuff(lexerActions); // \"\".join([str(la) for la in\n\t// lexerActions]))\n\treturn this;\n}\n\n// Creates a {@link LexerActionExecutor} which executes the actions for\n// the input {@code lexerActionExecutor} followed by a specified\n// {@code lexerAction}.\n//\n// @param lexerActionExecutor The executor for actions already traversed by\n// the lexer while matching a token within a particular\n// {@link LexerATNConfig}. If this is {@code null}, the method behaves as\n// though it were an empty executor.\n// @param lexerAction The lexer action to execute after the actions\n// specified in {@code lexerActionExecutor}.\n//\n// @return A {@link LexerActionExecutor} for executing the combine actions\n// of {@code lexerActionExecutor} and {@code lexerAction}.\nLexerActionExecutor.append = function(lexerActionExecutor, lexerAction) {\n\tif (lexerActionExecutor === null) {\n\t\treturn new LexerActionExecutor([ lexerAction ]);\n\t}\n\tvar lexerActions = lexerActionExecutor.lexerActions.concat([ lexerAction ]);\n\treturn new LexerActionExecutor(lexerActions);\n};\n\n// Creates a {@link LexerActionExecutor} which encodes the current offset\n// for position-dependent lexer actions.\n//\n// <p>Normally, when the executor encounters lexer actions where\n// {@link LexerAction//isPositionDependent} returns {@code true}, it calls\n// {@link IntStream//seek} on the input {@link CharStream} to set the input\n// position to the <em>end</em> of the current token. This behavior provides\n// for efficient DFA representation of lexer actions which appear at the end\n// of a lexer rule, even when the lexer rule matches a variable number of\n// characters.</p>\n//\n// <p>Prior to traversing a match transition in the ATN, the current offset\n// from the token start index is assigned to all position-dependent lexer\n// actions which have not already been assigned a fixed offset. By storing\n// the offsets relative to the token start index, the DFA representation of\n// lexer actions which appear in the middle of tokens remains efficient due\n// to sharing among tokens of the same length, regardless of their absolute\n// position in the input stream.</p>\n//\n// <p>If the current executor already has offsets assigned to all\n// position-dependent lexer actions, the method returns {@code this}.</p>\n//\n// @param offset The current offset to assign to all position-dependent\n// lexer actions which do not already have offsets assigned.\n//\n// @return A {@link LexerActionExecutor} which stores input stream offsets\n// for all position-dependent lexer actions.\n// /\nLexerActionExecutor.prototype.fixOffsetBeforeMatch = function(offset) {\n\tvar updatedLexerActions = null;\n\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\tif (this.lexerActions[i].isPositionDependent &&\n\t\t\t\t!(this.lexerActions[i] instanceof LexerIndexedCustomAction)) {\n\t\t\tif (updatedLexerActions === null) {\n\t\t\t\tupdatedLexerActions = this.lexerActions.concat([]);\n\t\t\t}\n\t\t\tupdatedLexerActions[i] = new LexerIndexedCustomAction(offset,\n\t\t\t\t\tthis.lexerActions[i]);\n\t\t}\n\t}\n\tif (updatedLexerActions === null) {\n\t\treturn this;\n\t} else {\n\t\treturn new LexerActionExecutor(updatedLexerActions);\n\t}\n};\n\n// Execute the actions encapsulated by this executor within the context of a\n// particular {@link Lexer}.\n//\n// <p>This method calls {@link IntStream//seek} to set the position of the\n// {@code input} {@link CharStream} prior to calling\n// {@link LexerAction//execute} on a position-dependent action. Before the\n// method returns, the input position will be restored to the same position\n// it was in when the method was invoked.</p>\n//\n// @param lexer The lexer instance.\n// @param input The input stream which is the source for the current token.\n// When this method is called, the current {@link IntStream//index} for\n// {@code input} should be the start of the following token, i.e. 1\n// character past the end of the current token.\n// @param startIndex The token start index. This value may be passed to\n// {@link IntStream//seek} to set the {@code input} position to the beginning\n// of the token.\n// /\nLexerActionExecutor.prototype.execute = function(lexer, input, startIndex) {\n\tvar requiresSeek = false;\n\tvar stopIndex = input.index;\n\ttry {\n\t\tfor (var i = 0; i < this.lexerActions.length; i++) {\n\t\t\tvar lexerAction = this.lexerActions[i];\n\t\t\tif (lexerAction instanceof LexerIndexedCustomAction) {\n\t\t\t\tvar offset = lexerAction.offset;\n\t\t\t\tinput.seek(startIndex + offset);\n\t\t\t\tlexerAction = lexerAction.action;\n\t\t\t\trequiresSeek = (startIndex + offset) !== stopIndex;\n\t\t\t} else if (lexerAction.isPositionDependent) {\n\t\t\t\tinput.seek(stopIndex);\n\t\t\t\trequiresSeek = false;\n\t\t\t}\n\t\t\tlexerAction.execute(lexer);\n\t\t}\n\t} finally {\n\t\tif (requiresSeek) {\n\t\t\tinput.seek(stopIndex);\n\t\t}\n\t}\n};\n\nLexerActionExecutor.prototype.hashCode = function() {\n\treturn this.cachedHashCode;\n};\n\nLexerActionExecutor.prototype.updateHashCode = function(hash) {\n hash.update(this.cachedHashCode);\n};\n\n\nLexerActionExecutor.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof LexerActionExecutor)) {\n\t\treturn false;\n\t} else if (this.cachedHashCode != other.cachedHashCode) {\n\t\treturn false;\n\t} else if (this.lexerActions.length != other.lexerActions.length) {\n\t\treturn false;\n\t} else {\n\t\tvar numActions = this.lexerActions.length\n\t\tfor (var idx = 0; idx < numActions; ++idx) {\n\t\t\tif (!this.lexerActions[idx].equals(other.lexerActions[idx])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n};\n\nexports.LexerActionExecutor = LexerActionExecutor;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// The embodiment of the adaptive LL(*), ALL(*), parsing strategy.\n//\n// <p>\n// The basic complexity of the adaptive strategy makes it harder to understand.\n// We begin with ATN simulation to build paths in a DFA. Subsequent prediction\n// requests go through the DFA first. If they reach a state without an edge for\n// the current symbol, the algorithm fails over to the ATN simulation to\n// complete the DFA path for the current input (until it finds a conflict state\n// or uniquely predicting state).</p>\n//\n// <p>\n// All of that is done without using the outer context because we want to create\n// a DFA that is not dependent upon the rule invocation stack when we do a\n// prediction. One DFA works in all contexts. We avoid using context not\n// necessarily because it's slower, although it can be, but because of the DFA\n// caching problem. The closure routine only considers the rule invocation stack\n// created during prediction beginning in the decision rule. For example, if\n// prediction occurs without invoking another rule's ATN, there are no context\n// stacks in the configurations. When lack of context leads to a conflict, we\n// don't know if it's an ambiguity or a weakness in the strong LL(*) parsing\n// strategy (versus full LL(*)).</p>\n//\n// <p>\n// When SLL yields a configuration set with conflict, we rewind the input and\n// retry the ATN simulation, this time using full outer context without adding\n// to the DFA. Configuration context stacks will be the full invocation stacks\n// from the start rule. If we get a conflict using full context, then we can\n// definitively say we have a true ambiguity for that input sequence. If we\n// don't get a conflict, it implies that the decision is sensitive to the outer\n// context. (It is not context-sensitive in the sense of context-sensitive\n// grammars.)</p>\n//\n// <p>\n// The next time we reach this DFA state with an SLL conflict, through DFA\n// simulation, we will again retry the ATN simulation using full context mode.\n// This is slow because we can't save the results and have to \"interpret\" the\n// ATN each time we get that input.</p>\n//\n// <p>\n// <strong>CACHING FULL CONTEXT PREDICTIONS</strong></p>\n//\n// <p>\n// We could cache results from full context to predicted alternative easily and\n// that saves a lot of time but doesn't work in presence of predicates. The set\n// of visible predicates from the ATN start state changes depending on the\n// context, because closure can fall off the end of a rule. I tried to cache\n// tuples (stack context, semantic context, predicted alt) but it was slower\n// than interpreting and much more complicated. Also required a huge amount of\n// memory. The goal is not to create the world's fastest parser anyway. I'd like\n// to keep this algorithm simple. By launching multiple threads, we can improve\n// the speed of parsing across a large number of files.</p>\n//\n// <p>\n// There is no strict ordering between the amount of input used by SLL vs LL,\n// which makes it really hard to build a cache for full context. Let's say that\n// we have input A B C that leads to an SLL conflict with full context X. That\n// implies that using X we might only use A B but we could also use A B C D to\n// resolve conflict. Input A B C D could predict alternative 1 in one position\n// in the input and A B C E could predict alternative 2 in another position in\n// input. The conflicting SLL configurations could still be non-unique in the\n// full context prediction, which would lead us to requiring more input than the\n// original A B C.\tTo make a\tprediction cache work, we have to track\tthe exact\n// input\tused during the previous prediction. That amounts to a cache that maps\n// X to a specific DFA for that context.</p>\n//\n// <p>\n// Something should be done for left-recursive expression predictions. They are\n// likely LL(1) + pred eval. Easier to do the whole SLL unless error and retry\n// with full LL thing Sam does.</p>\n//\n// <p>\n// <strong>AVOIDING FULL CONTEXT PREDICTION</strong></p>\n//\n// <p>\n// We avoid doing full context retry when the outer context is empty, we did not\n// dip into the outer context by falling off the end of the decision state rule,\n// or when we force SLL mode.</p>\n//\n// <p>\n// As an example of the not dip into outer context case, consider as super\n// constructor calls versus function calls. One grammar might look like\n// this:</p>\n//\n// <pre>\n// ctorBody\n// : '{' superCall? stat* '}'\n// ;\n// </pre>\n//\n// <p>\n// Or, you might see something like</p>\n//\n// <pre>\n// stat\n// : superCall ';'\n// | expression ';'\n// | ...\n// ;\n// </pre>\n//\n// <p>\n// In both cases I believe that no closure operations will dip into the outer\n// context. In the first case ctorBody in the worst case will stop at the '}'.\n// In the 2nd case it should stop at the ';'. Both cases should stay within the\n// entry rule and not dip into the outer context.</p>\n//\n// <p>\n// <strong>PREDICATES</strong></p>\n//\n// <p>\n// Predicates are always evaluated if present in either SLL or LL both. SLL and\n// LL simulation deals with predicates differently. SLL collects predicates as\n// it performs closure operations like ANTLR v3 did. It delays predicate\n// evaluation until it reaches and accept state. This allows us to cache the SLL\n// ATN simulation whereas, if we had evaluated predicates on-the-fly during\n// closure, the DFA state configuration sets would be different and we couldn't\n// build up a suitable DFA.</p>\n//\n// <p>\n// When building a DFA accept state during ATN simulation, we evaluate any\n// predicates and return the sole semantically valid alternative. If there is\n// more than 1 alternative, we report an ambiguity. If there are 0 alternatives,\n// we throw an exception. Alternatives without predicates act like they have\n// true predicates. The simple way to think about it is to strip away all\n// alternatives with false predicates and choose the minimum alternative that\n// remains.</p>\n//\n// <p>\n// When we start in the DFA and reach an accept state that's predicated, we test\n// those and return the minimum semantically viable alternative. If no\n// alternatives are viable, we throw an exception.</p>\n//\n// <p>\n// During full LL ATN simulation, closure always evaluates predicates and\n// on-the-fly. This is crucial to reducing the configuration set size during\n// closure. It hits a landmine when parsing with the Java grammar, for example,\n// without this on-the-fly evaluation.</p>\n//\n// <p>\n// <strong>SHARING DFA</strong></p>\n//\n// <p>\n// All instances of the same parser share the same decision DFAs through a\n// static field. Each instance gets its own ATN simulator but they share the\n// same {@link //decisionToDFA} field. They also share a\n// {@link PredictionContextCache} object that makes sure that all\n// {@link PredictionContext} objects are shared among the DFA states. This makes\n// a big size difference.</p>\n//\n// <p>\n// <strong>THREAD SAFETY</strong></p>\n//\n// <p>\n// The {@link ParserATNSimulator} locks on the {@link //decisionToDFA} field when\n// it adds a new DFA object to that array. {@link //addDFAEdge}\n// locks on the DFA for the current decision when setting the\n// {@link DFAState//edges} field. {@link //addDFAState} locks on\n// the DFA for the current decision when looking up a DFA state to see if it\n// already exists. We must make sure that all requests to add DFA states that\n// are equivalent result in the same shared DFA object. This is because lots of\n// threads will be trying to update the DFA at once. The\n// {@link //addDFAState} method also locks inside the DFA lock\n// but this time on the shared context cache when it rebuilds the\n// configurations' {@link PredictionContext} objects using cached\n// subgraphs/nodes. No other locking occurs, even during DFA simulation. This is\n// safe as long as we can guarantee that all threads referencing\n// {@code s.edge[t]} get the same physical target {@link DFAState}, or\n// {@code null}. Once into the DFA, the DFA simulation does not reference the\n// {@link DFA//states} map. It follows the {@link DFAState//edges} field to new\n// targets. The DFA simulator will either find {@link DFAState//edges} to be\n// {@code null}, to be non-{@code null} and {@code dfa.edges[t]} null, or\n// {@code dfa.edges[t]} to be non-null. The\n// {@link //addDFAEdge} method could be racing to set the field\n// but in either case the DFA simulator works; if {@code null}, and requests ATN\n// simulation. It could also race trying to get {@code dfa.edges[t]}, but either\n// way it will work because it's not doing a test and set operation.</p>\n//\n// <p>\n// <strong>Starting with SLL then failing to combined SLL/LL (Two-Stage\n// Parsing)</strong></p>\n//\n// <p>\n// Sam pointed out that if SLL does not give a syntax error, then there is no\n// point in doing full LL, which is slower. We only have to try LL if we get a\n// syntax error. For maximum speed, Sam starts the parser set to pure SLL\n// mode with the {@link BailErrorStrategy}:</p>\n//\n// <pre>\n// parser.{@link Parser//getInterpreter() getInterpreter()}.{@link //setPredictionMode setPredictionMode}{@code (}{@link PredictionMode//SLL}{@code )};\n// parser.{@link Parser//setErrorHandler setErrorHandler}(new {@link BailErrorStrategy}());\n// </pre>\n//\n// <p>\n// If it does not get a syntax error, then we're done. If it does get a syntax\n// error, we need to retry with the combined SLL/LL strategy.</p>\n//\n// <p>\n// The reason this works is as follows. If there are no SLL conflicts, then the\n// grammar is SLL (at least for that input set). If there is an SLL conflict,\n// the full LL analysis must yield a set of viable alternatives which is a\n// subset of the alternatives reported by SLL. If the LL set is a singleton,\n// then the grammar is LL but not SLL. If the LL set is the same size as the SLL\n// set, the decision is SLL. If the LL set has size > 1, then that decision\n// is truly ambiguous on the current input. If the LL set is smaller, then the\n// SLL conflict resolution might choose an alternative that the full LL would\n// rule out as a possibility based upon better context information. If that's\n// the case, then the SLL parse will definitely get an error because the full LL\n// analysis says it's not viable. If SLL conflict resolution chooses an\n// alternative within the LL set, them both SLL and LL would choose the same\n// alternative because they both choose the minimum of multiple conflicting\n// alternatives.</p>\n//\n// <p>\n// Let's say we have a set of SLL conflicting alternatives {@code {1, 2, 3}} and\n// a smaller LL set called <em>s</em>. If <em>s</em> is {@code {2, 3}}, then SLL\n// parsing will get an error because SLL will pursue alternative 1. If\n// <em>s</em> is {@code {1, 2}} or {@code {1, 3}} then both SLL and LL will\n// choose the same alternative because alternative one is the minimum of either\n// set. If <em>s</em> is {@code {2}} or {@code {3}} then SLL will get a syntax\n// error. If <em>s</em> is {@code {1}} then SLL will succeed.</p>\n//\n// <p>\n// Of course, if the input is invalid, then we will get an error for sure in\n// both SLL and LL parsing. Erroneous input will therefore require 2 passes over\n// the input.</p>\n//\n\nvar Utils = require('./../Utils');\nvar Set = Utils.Set;\nvar BitSet = Utils.BitSet;\nvar DoubleDict = Utils.DoubleDict;\nvar ATN = require('./ATN').ATN;\nvar ATNState = require('./ATNState').ATNState;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar Token = require('./../Token').Token;\nvar DFAState = require('./../dfa/DFAState').DFAState;\nvar PredPrediction = require('./../dfa/DFAState').PredPrediction;\nvar ATNSimulator = require('./ATNSimulator').ATNSimulator;\nvar PredictionMode = require('./PredictionMode').PredictionMode;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar StarLoopEntryState = require('./ATNState').StarLoopEntryState;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar PredictionContext = require('./../PredictionContext').PredictionContext;\nvar Interval = require('./../IntervalSet').Interval;\nvar Transitions = require('./Transition');\nvar Transition = Transitions.Transition;\nvar SetTransition = Transitions.SetTransition;\nvar NotSetTransition = Transitions.NotSetTransition;\nvar RuleTransition = Transitions.RuleTransition;\nvar ActionTransition = Transitions.ActionTransition;\nvar NoViableAltException = require('./../error/Errors').NoViableAltException;\n\nvar SingletonPredictionContext = require('./../PredictionContext').SingletonPredictionContext;\nvar predictionContextFromRuleContext = require('./../PredictionContext').predictionContextFromRuleContext;\n\nfunction ParserATNSimulator(parser, atn, decisionToDFA, sharedContextCache) {\n\tATNSimulator.call(this, atn, sharedContextCache);\n this.parser = parser;\n this.decisionToDFA = decisionToDFA;\n // SLL, LL, or LL + exact ambig detection?//\n this.predictionMode = PredictionMode.LL;\n // LAME globals to avoid parameters!!!!! I need these down deep in predTransition\n this._input = null;\n this._startIndex = 0;\n this._outerContext = null;\n this._dfa = null;\n // Each prediction operation uses a cache for merge of prediction contexts.\n // Don't keep around as it wastes huge amounts of memory. DoubleKeyMap\n // isn't synchronized but we're ok since two threads shouldn't reuse same\n // parser/atnsim object because it can only handle one input at a time.\n // This maps graphs a and b to merged result c. (a,b)→c. We can avoid\n // the merge if we ever see a and b again. Note that (b,a)→c should\n // also be examined during cache lookup.\n //\n this.mergeCache = null;\n return this;\n}\n\nParserATNSimulator.prototype = Object.create(ATNSimulator.prototype);\nParserATNSimulator.prototype.constructor = ParserATNSimulator;\n\nParserATNSimulator.prototype.debug = false;\nParserATNSimulator.prototype.debug_closure = false;\nParserATNSimulator.prototype.debug_add = false;\nParserATNSimulator.prototype.debug_list_atn_decisions = false;\nParserATNSimulator.prototype.dfa_debug = false;\nParserATNSimulator.prototype.retry_debug = false;\n\n\nParserATNSimulator.prototype.reset = function() {\n};\n\nParserATNSimulator.prototype.adaptivePredict = function(input, decision, outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"adaptivePredict decision \" + decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" +\n input.LT(1).column);\n }\n this._input = input;\n this._startIndex = input.index;\n this._outerContext = outerContext;\n\n var dfa = this.decisionToDFA[decision];\n this._dfa = dfa;\n var m = input.mark();\n var index = input.index;\n\n // Now we are certain to have a specific decision's DFA\n // But, do we still need an initial state?\n try {\n var s0;\n if (dfa.precedenceDfa) {\n // the start state for a precedence DFA depends on the current\n // parser precedence, and is provided by a DFA method.\n s0 = dfa.getPrecedenceStartState(this.parser.getPrecedence());\n } else {\n // the start state for a \"regular\" DFA is just s0\n s0 = dfa.s0;\n }\n if (s0===null) {\n if (outerContext===null) {\n outerContext = RuleContext.EMPTY;\n }\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"predictATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \", outerContext=\" + outerContext.toString(this.parser.ruleNames));\n }\n\n var fullCtx = false;\n var s0_closure = this.computeStartState(dfa.atnStartState, RuleContext.EMPTY, fullCtx);\n\n if( dfa.precedenceDfa) {\n // If this is a precedence DFA, we use applyPrecedenceFilter\n // to convert the computed start state to a precedence start\n // state. We then use DFA.setPrecedenceStartState to set the\n // appropriate start state for the precedence level rather\n // than simply setting DFA.s0.\n //\n dfa.s0.configs = s0_closure; // not used for prediction but useful to know start configs anyway\n s0_closure = this.applyPrecedenceFilter(s0_closure);\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.setPrecedenceStartState(this.parser.getPrecedence(), s0);\n } else {\n s0 = this.addDFAState(dfa, new DFAState(null, s0_closure));\n dfa.s0 = s0;\n }\n }\n var alt = this.execATN(dfa, s0, input, index, outerContext);\n if (this.debug) {\n console.log(\"DFA after predictATN: \" + dfa.toString(this.parser.literalNames));\n }\n return alt;\n } finally {\n this._dfa = null;\n this.mergeCache = null; // wack cache after each prediction\n input.seek(index);\n input.release(m);\n }\n};\n// Performs ATN simulation to compute a predicted alternative based\n// upon the remaining input, but also updates the DFA cache to avoid\n// having to traverse the ATN again for the same input sequence.\n\n// There are some key conditions we're looking for after computing a new\n// set of ATN configs (proposed DFA state):\n // if the set is empty, there is no viable alternative for current symbol\n // does the state uniquely predict an alternative?\n // does the state have a conflict that would prevent us from\n // putting it on the work list?\n\n// We also have some key operations to do:\n // add an edge from previous DFA state to potentially new DFA state, D,\n // upon current symbol but only if adding to work list, which means in all\n // cases except no viable alternative (and possibly non-greedy decisions?)\n // collecting predicates and adding semantic context to DFA accept states\n // adding rule context to context-sensitive DFA accept states\n // consuming an input symbol\n // reporting a conflict\n // reporting an ambiguity\n // reporting a context sensitivity\n // reporting insufficient predicates\n\n// cover these cases:\n// dead end\n// single alt\n// single alt + preds\n// conflict\n// conflict + preds\n//\nParserATNSimulator.prototype.execATN = function(dfa, s0, input, startIndex, outerContext ) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATN decision \" + dfa.decision +\n \" exec LA(1)==\" + this.getLookaheadName(input) +\n \" line \" + input.LT(1).line + \":\" + input.LT(1).column);\n }\n var alt;\n var previousD = s0;\n\n if (this.debug) {\n console.log(\"s0 = \" + s0);\n }\n var t = input.LA(1);\n while(true) { // while more work\n var D = this.getExistingTargetState(previousD, t);\n if(D===null) {\n D = this.computeTargetState(dfa, previousD, t);\n }\n if(D===ATNSimulator.ERROR) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for SLL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previousD.configs, startIndex);\n input.seek(startIndex);\n alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD.configs, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n if(D.requiresFullContext && this.predictionMode !== PredictionMode.SLL) {\n // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)\n var conflictingAlts = null;\n if (D.predicates!==null) {\n if (this.debug) {\n console.log(\"DFA state has preds in DFA sim LL failover\");\n }\n var conflictIndex = input.index;\n if(conflictIndex !== startIndex) {\n input.seek(startIndex);\n }\n conflictingAlts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (conflictingAlts.length===1) {\n if(this.debug) {\n console.log(\"Full LL avoided\");\n }\n return conflictingAlts.minValue();\n }\n if (conflictIndex !== startIndex) {\n // restore the index so reporting the fallback to full\n // context occurs with the index at the correct spot\n input.seek(conflictIndex);\n }\n }\n if (this.dfa_debug) {\n console.log(\"ctx sensitive state \" + outerContext +\" in \" + D);\n }\n var fullCtx = true;\n var s0_closure = this.computeStartState(dfa.atnStartState, outerContext, fullCtx);\n this.reportAttemptingFullContext(dfa, conflictingAlts, D.configs, startIndex, input.index);\n alt = this.execATNWithFullContext(dfa, D, s0_closure, input, startIndex, outerContext);\n return alt;\n }\n if (D.isAcceptState) {\n if (D.predicates===null) {\n return D.prediction;\n }\n var stopIndex = input.index;\n input.seek(startIndex);\n var alts = this.evalSemanticContext(D.predicates, outerContext, true);\n if (alts.length===0) {\n throw this.noViableAlt(input, outerContext, D.configs, startIndex);\n } else if (alts.length===1) {\n return alts.minValue();\n } else {\n // report ambiguity after predicate evaluation to make sure the correct set of ambig alts is reported.\n this.reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D.configs);\n return alts.minValue();\n }\n }\n previousD = D;\n\n if (t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n};\n//\n// Get an existing target state for an edge in the DFA. If the target state\n// for the edge has not yet been computed or is otherwise not available,\n// this method returns {@code null}.\n//\n// @param previousD The current DFA state\n// @param t The next input symbol\n// @return The existing target DFA state for the given input symbol\n// {@code t}, or {@code null} if the target state for this edge is not\n// already cached\n//\nParserATNSimulator.prototype.getExistingTargetState = function(previousD, t) {\n var edges = previousD.edges;\n if (edges===null) {\n return null;\n } else {\n return edges[t + 1] || null;\n }\n};\n//\n// Compute a target state for an edge in the DFA, and attempt to add the\n// computed state and corresponding edge to the DFA.\n//\n// @param dfa The DFA\n// @param previousD The current DFA state\n// @param t The next input symbol\n//\n// @return The computed target DFA state for the given input symbol\n// {@code t}. If {@code t} does not lead to a valid DFA state, this method\n// returns {@link //ERROR}.\n//\nParserATNSimulator.prototype.computeTargetState = function(dfa, previousD, t) {\n var reach = this.computeReachSet(previousD.configs, t, false);\n if(reach===null) {\n this.addDFAEdge(dfa, previousD, t, ATNSimulator.ERROR);\n return ATNSimulator.ERROR;\n }\n // create new target state; we'll add to DFA after it's complete\n var D = new DFAState(null, reach);\n\n var predictedAlt = this.getUniqueAlt(reach);\n\n if (this.debug) {\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n console.log(\"SLL altSubSets=\" + Utils.arrayToString(altSubSets) +\n \", previous=\" + previousD.configs +\n \", configs=\" + reach +\n \", predict=\" + predictedAlt +\n \", allSubsetsConflict=\" +\n PredictionMode.allSubsetsConflict(altSubSets) + \", conflictingAlts=\" +\n this.getConflictingAlts(reach));\n }\n if (predictedAlt!==ATN.INVALID_ALT_NUMBER) {\n // NO CONFLICT, UNIQUELY PREDICTED ALT\n D.isAcceptState = true;\n D.configs.uniqueAlt = predictedAlt;\n D.prediction = predictedAlt;\n } else if (PredictionMode.hasSLLConflictTerminatingPrediction(this.predictionMode, reach)) {\n // MORE THAN ONE VIABLE ALTERNATIVE\n D.configs.conflictingAlts = this.getConflictingAlts(reach);\n D.requiresFullContext = true;\n // in SLL-only mode, we will stop at this state and return the minimum alt\n D.isAcceptState = true;\n D.prediction = D.configs.conflictingAlts.minValue();\n }\n if (D.isAcceptState && D.configs.hasSemanticContext) {\n this.predicateDFAState(D, this.atn.getDecisionState(dfa.decision));\n if( D.predicates!==null) {\n D.prediction = ATN.INVALID_ALT_NUMBER;\n }\n }\n // all adds to dfa are done after we've created full D state\n D = this.addDFAEdge(dfa, previousD, t, D);\n return D;\n};\n\nParserATNSimulator.prototype.predicateDFAState = function(dfaState, decisionState) {\n // We need to test all predicates, even in DFA states that\n // uniquely predict alternative.\n var nalts = decisionState.transitions.length;\n // Update DFA so reach becomes accept state with (predicate,alt)\n // pairs if preds found for conflicting alts\n var altsToCollectPredsFrom = this.getConflictingAltsOrUniqueAlt(dfaState.configs);\n var altToPred = this.getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState.configs, nalts);\n if (altToPred!==null) {\n dfaState.predicates = this.getPredicatePredictions(altsToCollectPredsFrom, altToPred);\n dfaState.prediction = ATN.INVALID_ALT_NUMBER; // make sure we use preds\n } else {\n // There are preds in configs but they might go away\n // when OR'd together like {p}? || NONE == NONE. If neither\n // alt has preds, resolve to min alt\n dfaState.prediction = altsToCollectPredsFrom.minValue();\n }\n};\n\n// comes back with reach.uniqueAlt set to a valid alt\nParserATNSimulator.prototype.execATNWithFullContext = function(dfa, D, // how far we got before failing over\n s0,\n input,\n startIndex,\n outerContext) {\n if (this.debug || this.debug_list_atn_decisions) {\n console.log(\"execATNWithFullContext \"+s0);\n }\n var fullCtx = true;\n var foundExactAmbig = false;\n var reach = null;\n var previous = s0;\n input.seek(startIndex);\n var t = input.LA(1);\n var predictedAlt = -1;\n while (true) { // while more work\n reach = this.computeReachSet(previous, t, fullCtx);\n if (reach===null) {\n // if any configs in previous dipped into outer context, that\n // means that input up to t actually finished entry rule\n // at least for LL decision. Full LL doesn't dip into outer\n // so don't need special case.\n // We will get an error no matter what so delay until after\n // decision; better error message. Also, no reachable target\n // ATN states in SLL implies LL will also get nowhere.\n // If conflict in states that dip out, choose min since we\n // will get error no matter what.\n var e = this.noViableAlt(input, outerContext, previous, startIndex);\n input.seek(startIndex);\n var alt = this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);\n if(alt!==ATN.INVALID_ALT_NUMBER) {\n return alt;\n } else {\n throw e;\n }\n }\n var altSubSets = PredictionMode.getConflictingAltSubsets(reach);\n if(this.debug) {\n console.log(\"LL altSubSets=\" + altSubSets + \", predict=\" +\n PredictionMode.getUniqueAlt(altSubSets) + \", resolvesToJustOneViableAlt=\" +\n PredictionMode.resolvesToJustOneViableAlt(altSubSets));\n }\n reach.uniqueAlt = this.getUniqueAlt(reach);\n // unique prediction?\n if(reach.uniqueAlt!==ATN.INVALID_ALT_NUMBER) {\n predictedAlt = reach.uniqueAlt;\n break;\n } else if (this.predictionMode !== PredictionMode.LL_EXACT_AMBIG_DETECTION) {\n predictedAlt = PredictionMode.resolvesToJustOneViableAlt(altSubSets);\n if(predictedAlt !== ATN.INVALID_ALT_NUMBER) {\n break;\n }\n } else {\n // In exact ambiguity mode, we never try to terminate early.\n // Just keeps scarfing until we know what the conflict is\n if (PredictionMode.allSubsetsConflict(altSubSets) && PredictionMode.allSubsetsEqual(altSubSets)) {\n foundExactAmbig = true;\n predictedAlt = PredictionMode.getSingleViableAlt(altSubSets);\n break;\n }\n // else there are multiple non-conflicting subsets or\n // we're not sure what the ambiguity is yet.\n // So, keep going.\n }\n previous = reach;\n if( t !== Token.EOF) {\n input.consume();\n t = input.LA(1);\n }\n }\n // If the configuration set uniquely predicts an alternative,\n // without conflict, then we know that it's a full LL decision\n // not SLL.\n if (reach.uniqueAlt !== ATN.INVALID_ALT_NUMBER ) {\n this.reportContextSensitivity(dfa, predictedAlt, reach, startIndex, input.index);\n return predictedAlt;\n }\n // We do not check predicates here because we have checked them\n // on-the-fly when doing full context prediction.\n\n //\n // In non-exact ambiguity detection mode, we might\tactually be able to\n // detect an exact ambiguity, but I'm not going to spend the cycles\n // needed to check. We only emit ambiguity warnings in exact ambiguity\n // mode.\n //\n // For example, we might know that we have conflicting configurations.\n // But, that does not mean that there is no way forward without a\n // conflict. It's possible to have nonconflicting alt subsets as in:\n\n // altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]\n\n // from\n //\n // [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),\n // (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]\n //\n // In this case, (17,1,[5 $]) indicates there is some next sequence that\n // would resolve this without conflict to alternative 1. Any other viable\n // next sequence, however, is associated with a conflict. We stop\n // looking for input because no amount of further lookahead will alter\n // the fact that we should predict alternative 1. We just can't say for\n // sure that there is an ambiguity without looking further.\n\n this.reportAmbiguity(dfa, D, startIndex, input.index, foundExactAmbig, null, reach);\n\n return predictedAlt;\n};\n\nParserATNSimulator.prototype.computeReachSet = function(closure, t, fullCtx) {\n if (this.debug) {\n console.log(\"in computeReachSet, starting closure: \" + closure);\n }\n if( this.mergeCache===null) {\n this.mergeCache = new DoubleDict();\n }\n var intermediate = new ATNConfigSet(fullCtx);\n\n // Configurations already in a rule stop state indicate reaching the end\n // of the decision rule (local context) or end of the start rule (full\n // context). Once reached, these configurations are never updated by a\n // closure operation, so they are handled separately for the performance\n // advantage of having a smaller intermediate set when calling closure.\n //\n // For full-context reach operations, separate handling is required to\n // ensure that the alternative matching the longest overall sequence is\n // chosen when multiple such configurations can match the input.\n\n var skippedStopStates = null;\n\n // First figure out where we can reach on input t\n for (var i=0; i<closure.items.length;i++) {\n var c = closure.items[i];\n if(this.debug_add) {\n console.log(\"testing \" + this.getTokenName(t) + \" at \" + c);\n }\n if (c.state instanceof RuleStopState) {\n if (fullCtx || t === Token.EOF) {\n if (skippedStopStates===null) {\n skippedStopStates = [];\n }\n skippedStopStates.push(c);\n if(this.debug_add) {\n console.log(\"added \" + c + \" to skippedStopStates\");\n }\n }\n continue;\n }\n for(var j=0;j<c.state.transitions.length;j++) {\n var trans = c.state.transitions[j];\n var target = this.getReachableTarget(trans, t);\n if (target!==null) {\n var cfg = new ATNConfig({state:target}, c);\n intermediate.add(cfg, this.mergeCache);\n if(this.debug_add) {\n console.log(\"added \" + cfg + \" to intermediate\");\n }\n }\n }\n }\n // Now figure out where the reach operation can take us...\n var reach = null;\n\n // This block optimizes the reach operation for intermediate sets which\n // trivially indicate a termination state for the overall\n // adaptivePredict operation.\n //\n // The conditions assume that intermediate\n // contains all configurations relevant to the reach set, but this\n // condition is not true when one or more configurations have been\n // withheld in skippedStopStates, or when the current symbol is EOF.\n //\n if (skippedStopStates===null && t!==Token.EOF) {\n if (intermediate.items.length===1) {\n // Don't pursue the closure if there is just one state.\n // It can only have one alternative; just add to result\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n } else if (this.getUniqueAlt(intermediate)!==ATN.INVALID_ALT_NUMBER) {\n // Also don't pursue the closure if there is unique alternative\n // among the configurations.\n reach = intermediate;\n }\n }\n // If the reach set could not be trivially determined, perform a closure\n // operation on the intermediate set to compute its initial value.\n //\n if (reach===null) {\n reach = new ATNConfigSet(fullCtx);\n var closureBusy = new Set();\n var treatEofAsEpsilon = t === Token.EOF;\n for (var k=0; k<intermediate.items.length;k++) {\n this.closure(intermediate.items[k], reach, closureBusy, false, fullCtx, treatEofAsEpsilon);\n }\n }\n if (t === Token.EOF) {\n // After consuming EOF no additional input is possible, so we are\n // only interested in configurations which reached the end of the\n // decision rule (local context) or end of the start rule (full\n // context). Update reach to contain only these configurations. This\n // handles both explicit EOF transitions in the grammar and implicit\n // EOF transitions following the end of the decision or start rule.\n //\n // When reach==intermediate, no closure operation was performed. In\n // this case, removeAllConfigsNotInRuleStopState needs to check for\n // reachable rule stop states as well as configurations already in\n // a rule stop state.\n //\n // This is handled before the configurations in skippedStopStates,\n // because any configurations potentially added from that list are\n // already guaranteed to meet this condition whether or not it's\n // required.\n //\n reach = this.removeAllConfigsNotInRuleStopState(reach, reach === intermediate);\n }\n // If skippedStopStates!==null, then it contains at least one\n // configuration. For full-context reach operations, these\n // configurations reached the end of the start rule, in which case we\n // only add them back to reach if no configuration during the current\n // closure operation reached such a state. This ensures adaptivePredict\n // chooses an alternative matching the longest overall sequence when\n // multiple alternatives are viable.\n //\n if (skippedStopStates!==null && ( (! fullCtx) || (! PredictionMode.hasConfigInRuleStopState(reach)))) {\n for (var l=0; l<skippedStopStates.length;l++) {\n reach.add(skippedStopStates[l], this.mergeCache);\n }\n }\n if (reach.items.length===0) {\n return null;\n } else {\n return reach;\n }\n};\n//\n// Return a configuration set containing only the configurations from\n// {@code configs} which are in a {@link RuleStopState}. If all\n// configurations in {@code configs} are already in a rule stop state, this\n// method simply returns {@code configs}.\n//\n// <p>When {@code lookToEndOfRule} is true, this method uses\n// {@link ATN//nextTokens} for each configuration in {@code configs} which is\n// not already in a rule stop state to see if a rule stop state is reachable\n// from the configuration via epsilon-only transitions.</p>\n//\n// @param configs the configuration set to update\n// @param lookToEndOfRule when true, this method checks for rule stop states\n// reachable by epsilon-only transitions from each configuration in\n// {@code configs}.\n//\n// @return {@code configs} if all configurations in {@code configs} are in a\n// rule stop state, otherwise return a new configuration set containing only\n// the configurations from {@code configs} which are in a rule stop state\n//\nParserATNSimulator.prototype.removeAllConfigsNotInRuleStopState = function(configs, lookToEndOfRule) {\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return configs;\n }\n var result = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length;i++) {\n var config = configs.items[i];\n if (config.state instanceof RuleStopState) {\n result.add(config, this.mergeCache);\n continue;\n }\n if (lookToEndOfRule && config.state.epsilonOnlyTransitions) {\n var nextTokens = this.atn.nextTokens(config.state);\n if (nextTokens.contains(Token.EPSILON)) {\n var endOfRuleState = this.atn.ruleToStopState[config.state.ruleIndex];\n result.add(new ATNConfig({state:endOfRuleState}, config), this.mergeCache);\n }\n }\n }\n return result;\n};\n\nParserATNSimulator.prototype.computeStartState = function(p, ctx, fullCtx) {\n // always at least the implicit call to start rule\n var initialContext = predictionContextFromRuleContext(this.atn, ctx);\n var configs = new ATNConfigSet(fullCtx);\n for(var i=0;i<p.transitions.length;i++) {\n var target = p.transitions[i].target;\n var c = new ATNConfig({ state:target, alt:i+1, context:initialContext }, null);\n var closureBusy = new Set();\n this.closure(c, configs, closureBusy, true, fullCtx, false);\n }\n return configs;\n};\n\n//\n// This method transforms the start state computed by\n// {@link //computeStartState} to the special start state used by a\n// precedence DFA for a particular precedence value. The transformation\n// process applies the following changes to the start state's configuration\n// set.\n//\n// <ol>\n// <li>Evaluate the precedence predicates for each configuration using\n// {@link SemanticContext//evalPrecedence}.</li>\n// <li>Remove all configurations which predict an alternative greater than\n// 1, for which another configuration that predicts alternative 1 is in the\n// same ATN state with the same prediction context. This transformation is\n// valid for the following reasons:\n// <ul>\n// <li>The closure block cannot contain any epsilon transitions which bypass\n// the body of the closure, so all states reachable via alternative 1 are\n// part of the precedence alternatives of the transformed left-recursive\n// rule.</li>\n// <li>The \"primary\" portion of a left recursive rule cannot contain an\n// epsilon transition, so the only way an alternative other than 1 can exist\n// in a state that is also reachable via alternative 1 is by nesting calls\n// to the left-recursive rule, with the outer calls not being at the\n// preferred precedence level.</li>\n// </ul>\n// </li>\n// </ol>\n//\n// <p>\n// The prediction context must be considered by this filter to address\n// situations like the following.\n// </p>\n// <code>\n// <pre>\n// grammar TA;\n// prog: statement* EOF;\n// statement: letterA | statement letterA 'b' ;\n// letterA: 'a';\n// </pre>\n// </code>\n// <p>\n// If the above grammar, the ATN state immediately before the token\n// reference {@code 'a'} in {@code letterA} is reachable from the left edge\n// of both the primary and closure blocks of the left-recursive rule\n// {@code statement}. The prediction context associated with each of these\n// configurations distinguishes between them, and prevents the alternative\n// which stepped out to {@code prog} (and then back in to {@code statement}\n// from being eliminated by the filter.\n// </p>\n//\n// @param configs The configuration set computed by\n// {@link //computeStartState} as the start state for the DFA.\n// @return The transformed configuration set representing the start state\n// for a precedence DFA at a particular precedence level (determined by\n// calling {@link Parser//getPrecedence}).\n//\nParserATNSimulator.prototype.applyPrecedenceFilter = function(configs) {\n\tvar config;\n\tvar statesFromAlt1 = [];\n var configSet = new ATNConfigSet(configs.fullCtx);\n for(var i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n // handle alt 1 first\n if (config.alt !== 1) {\n continue;\n }\n var updatedContext = config.semanticContext.evalPrecedence(this.parser, this._outerContext);\n if (updatedContext===null) {\n // the configuration was eliminated\n continue;\n }\n statesFromAlt1[config.state.stateNumber] = config.context;\n if (updatedContext !== config.semanticContext) {\n configSet.add(new ATNConfig({semanticContext:updatedContext}, config), this.mergeCache);\n } else {\n configSet.add(config, this.mergeCache);\n }\n }\n for(i=0; i<configs.items.length; i++) {\n config = configs.items[i];\n if (config.alt === 1) {\n // already handled\n continue;\n }\n // In the future, this elimination step could be updated to also\n // filter the prediction context for alternatives predicting alt>1\n // (basically a graph subtraction algorithm).\n\t\tif (!config.precedenceFilterSuppressed) {\n var context = statesFromAlt1[config.state.stateNumber] || null;\n if (context!==null && context.equals(config.context)) {\n // eliminated\n continue;\n }\n\t\t}\n configSet.add(config, this.mergeCache);\n }\n return configSet;\n};\n\nParserATNSimulator.prototype.getReachableTarget = function(trans, ttype) {\n if (trans.matches(ttype, 0, this.atn.maxTokenType)) {\n return trans.target;\n } else {\n return null;\n }\n};\n\nParserATNSimulator.prototype.getPredsForAmbigAlts = function(ambigAlts, configs, nalts) {\n // REACH=[1|1|[]|0:0, 1|2|[]|0:1]\n // altToPred starts as an array of all null contexts. The entry at index i\n // corresponds to alternative i. altToPred[i] may have one of three values:\n // 1. null: no ATNConfig c is found such that c.alt==i\n // 2. SemanticContext.NONE: At least one ATNConfig c exists such that\n // c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,\n // alt i has at least one unpredicated config.\n // 3. Non-NONE Semantic Context: There exists at least one, and for all\n // ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.\n //\n // From this, it is clear that NONE||anything==NONE.\n //\n var altToPred = [];\n for(var i=0;i<configs.items.length;i++) {\n var c = configs.items[i];\n if(ambigAlts.contains( c.alt )) {\n altToPred[c.alt] = SemanticContext.orContext(altToPred[c.alt] || null, c.semanticContext);\n }\n }\n var nPredAlts = 0;\n for (i =1;i< nalts+1;i++) {\n var pred = altToPred[i] || null;\n if (pred===null) {\n altToPred[i] = SemanticContext.NONE;\n } else if (pred !== SemanticContext.NONE) {\n nPredAlts += 1;\n }\n }\n // nonambig alts are null in altToPred\n if (nPredAlts===0) {\n altToPred = null;\n }\n if (this.debug) {\n console.log(\"getPredsForAmbigAlts result \" + Utils.arrayToString(altToPred));\n }\n return altToPred;\n};\n\nParserATNSimulator.prototype.getPredicatePredictions = function(ambigAlts, altToPred) {\n var pairs = [];\n var containsPredicate = false;\n for (var i=1; i<altToPred.length;i++) {\n var pred = altToPred[i];\n // unpredicated is indicated by SemanticContext.NONE\n if( ambigAlts!==null && ambigAlts.contains( i )) {\n pairs.push(new PredPrediction(pred, i));\n }\n if (pred !== SemanticContext.NONE) {\n containsPredicate = true;\n }\n }\n if (! containsPredicate) {\n return null;\n }\n return pairs;\n};\n\n//\n// This method is used to improve the localization of error messages by\n// choosing an alternative rather than throwing a\n// {@link NoViableAltException} in particular prediction scenarios where the\n// {@link //ERROR} state was reached during ATN simulation.\n//\n// <p>\n// The default implementation of this method uses the following\n// algorithm to identify an ATN configuration which successfully parsed the\n// decision entry rule. Choosing such an alternative ensures that the\n// {@link ParserRuleContext} returned by the calling rule will be complete\n// and valid, and the syntax error will be reported later at a more\n// localized location.</p>\n//\n// <ul>\n// <li>If a syntactically valid path or paths reach the end of the decision rule and\n// they are semantically valid if predicated, return the min associated alt.</li>\n// <li>Else, if a semantically invalid but syntactically valid path exist\n// or paths exist, return the minimum associated alt.\n// </li>\n// <li>Otherwise, return {@link ATN//INVALID_ALT_NUMBER}.</li>\n// </ul>\n//\n// <p>\n// In some scenarios, the algorithm described above could predict an\n// alternative which will result in a {@link FailedPredicateException} in\n// the parser. Specifically, this could occur if the <em>only</em> configuration\n// capable of successfully parsing to the end of the decision rule is\n// blocked by a semantic predicate. By choosing this alternative within\n// {@link //adaptivePredict} instead of throwing a\n// {@link NoViableAltException}, the resulting\n// {@link FailedPredicateException} in the parser will identify the specific\n// predicate which is preventing the parser from successfully parsing the\n// decision rule, which helps developers identify and correct logic errors\n// in semantic predicates.\n// </p>\n//\n// @param configs The ATN configurations which were valid immediately before\n// the {@link //ERROR} state was reached\n// @param outerContext The is the \\gamma_0 initial parser context from the paper\n// or the parser stack at the instant before prediction commences.\n//\n// @return The value to return from {@link //adaptivePredict}, or\n// {@link ATN//INVALID_ALT_NUMBER} if a suitable alternative was not\n// identified and {@link //adaptivePredict} should report an error instead.\n//\nParserATNSimulator.prototype.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule = function(configs, outerContext) {\n var cfgs = this.splitAccordingToSemanticValidity(configs, outerContext);\n var semValidConfigs = cfgs[0];\n var semInvalidConfigs = cfgs[1];\n var alt = this.getAltThatFinishedDecisionEntryRule(semValidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists\n return alt;\n }\n // Is there a syntactically valid path with a failed pred?\n if (semInvalidConfigs.items.length>0) {\n alt = this.getAltThatFinishedDecisionEntryRule(semInvalidConfigs);\n if (alt!==ATN.INVALID_ALT_NUMBER) { // syntactically viable path exists\n return alt;\n }\n }\n return ATN.INVALID_ALT_NUMBER;\n};\n\nParserATNSimulator.prototype.getAltThatFinishedDecisionEntryRule = function(configs) {\n var alts = [];\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.reachesIntoOuterContext>0 || ((c.state instanceof RuleStopState) && c.context.hasEmptyPath())) {\n if(alts.indexOf(c.alt)<0) {\n alts.push(c.alt);\n }\n }\n }\n if (alts.length===0) {\n return ATN.INVALID_ALT_NUMBER;\n } else {\n return Math.min.apply(null, alts);\n }\n};\n// Walk the list of configurations and split them according to\n// those that have preds evaluating to true/false. If no pred, assume\n// true pred and include in succeeded set. Returns Pair of sets.\n//\n// Create a new set so as not to alter the incoming parameter.\n//\n// Assumption: the input stream has been restored to the starting point\n// prediction, which is where predicates need to evaluate.\n//\nParserATNSimulator.prototype.splitAccordingToSemanticValidity = function( configs, outerContext) {\n var succeeded = new ATNConfigSet(configs.fullCtx);\n var failed = new ATNConfigSet(configs.fullCtx);\n for(var i=0;i<configs.items.length; i++) {\n var c = configs.items[i];\n if (c.semanticContext !== SemanticContext.NONE) {\n var predicateEvaluationResult = c.semanticContext.evaluate(this.parser, outerContext);\n if (predicateEvaluationResult) {\n succeeded.add(c);\n } else {\n failed.add(c);\n }\n } else {\n succeeded.add(c);\n }\n }\n return [succeeded, failed];\n};\n\n// Look through a list of predicate/alt pairs, returning alts for the\n// pairs that win. A {@code NONE} predicate indicates an alt containing an\n// unpredicated config which behaves as \"always true.\" If !complete\n// then we stop at the first predicate that evaluates to true. This\n// includes pairs with null predicates.\n//\nParserATNSimulator.prototype.evalSemanticContext = function(predPredictions, outerContext, complete) {\n var predictions = new BitSet();\n for(var i=0;i<predPredictions.length;i++) {\n \tvar pair = predPredictions[i];\n if (pair.pred === SemanticContext.NONE) {\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n continue;\n }\n var predicateEvaluationResult = pair.pred.evaluate(this.parser, outerContext);\n if (this.debug || this.dfa_debug) {\n console.log(\"eval pred \" + pair + \"=\" + predicateEvaluationResult);\n }\n if (predicateEvaluationResult) {\n if (this.debug || this.dfa_debug) {\n console.log(\"PREDICT \" + pair.alt);\n }\n predictions.add(pair.alt);\n if (! complete) {\n break;\n }\n }\n }\n return predictions;\n};\n\n// TODO: If we are doing predicates, there is no point in pursuing\n// closure operations if we reach a DFA state that uniquely predicts\n// alternative. We will not be caching that DFA state and it is a\n// waste to pursue the closure. Might have to advance when we do\n// ambig detection thought :(\n//\n\nParserATNSimulator.prototype.closure = function(config, configs, closureBusy, collectPredicates, fullCtx, treatEofAsEpsilon) {\n var initialDepth = 0;\n this.closureCheckingStopState(config, configs, closureBusy, collectPredicates,\n fullCtx, initialDepth, treatEofAsEpsilon);\n};\n\n\nParserATNSimulator.prototype.closureCheckingStopState = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n if (this.debug || this.debug_closure) {\n console.log(\"closure(\" + config.toString(this.parser,true) + \")\");\n // console.log(\"configs(\" + configs.toString() + \")\");\n if(config.reachesIntoOuterContext>50) {\n throw \"problem\";\n }\n }\n if (config.state instanceof RuleStopState) {\n // We hit rule end. If we have context info, use it\n // run thru all possible stack tops in ctx\n if (! config.context.isEmpty()) {\n for ( var i =0; i<config.context.length; i++) {\n if (config.context.getReturnState(i) === PredictionContext.EMPTY_RETURN_STATE) {\n if (fullCtx) {\n configs.add(new ATNConfig({state:config.state, context:PredictionContext.EMPTY}, config), this.mergeCache);\n continue;\n } else {\n // we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n this.closure_(config, configs, closureBusy, collectPredicates,\n fullCtx, depth, treatEofAsEpsilon);\n }\n continue;\n }\n var returnState = this.atn.states[config.context.getReturnState(i)];\n var newContext = config.context.getParent(i); // \"pop\" return state\n var parms = {state:returnState, alt:config.alt, context:newContext, semanticContext:config.semanticContext};\n var c = new ATNConfig(parms, null);\n // While we have context to pop back from, we may have\n // gotten that context AFTER having falling off a rule.\n // Make sure we track that we are now out of context.\n c.reachesIntoOuterContext = config.reachesIntoOuterContext;\n this.closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);\n }\n return;\n } else if( fullCtx) {\n // reached end of start rule\n configs.add(config, this.mergeCache);\n return;\n } else {\n // else if we have no context info, just chase follow links (if greedy)\n if (this.debug) {\n console.log(\"FALLING off rule \" + this.getRuleName(config.state.ruleIndex));\n }\n }\n }\n this.closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);\n};\n\n\n// Do the actual work of walking epsilon edges//\nParserATNSimulator.prototype.closure_ = function(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon) {\n var p = config.state;\n // optimization\n if (! p.epsilonOnlyTransitions) {\n configs.add(config, this.mergeCache);\n // make sure to not return here, because EOF transitions can act as\n // both epsilon transitions and non-epsilon transitions.\n }\n for(var i = 0;i<p.transitions.length; i++) {\n if(i==0 && this.canDropLoopEntryEdgeInLeftRecursiveRule(config))\n continue;\n\n var t = p.transitions[i];\n var continueCollecting = collectPredicates && !(t instanceof ActionTransition);\n var c = this.getEpsilonTarget(config, t, continueCollecting, depth === 0, fullCtx, treatEofAsEpsilon);\n if (c!==null) {\n var newDepth = depth;\n if ( config.state instanceof RuleStopState) {\n // target fell off end of rule; mark resulting c as having dipped into outer context\n // We can't get here if incoming config was rule stop and we had context\n // track how far we dip into outer context. Might\n // come in handy and we avoid evaluating context dependent\n // preds if this is > 0.\n\t\t\t\tif (this._dfa !== null && this._dfa.precedenceDfa) {\n\t\t\t\t\tif (t.outermostPrecedenceReturn === this._dfa.atnStartState.ruleIndex) {\n\t\t\t\t\t\tc.precedenceFilterSuppressed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n c.reachesIntoOuterContext += 1;\n if (closureBusy.add(c)!==c) {\n // avoid infinite recursion for right-recursive rules\n continue;\n }\n configs.dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method\n newDepth -= 1;\n if (this.debug) {\n console.log(\"dips into outer ctx: \" + c);\n }\n } else {\n if (!t.isEpsilon && closureBusy.add(c)!==c){\n // avoid infinite recursion for EOF* and EOF+\n continue;\n }\n if (t instanceof RuleTransition) {\n // latch when newDepth goes negative - once we step out of the entry context we can't return\n if (newDepth >= 0) {\n newDepth += 1;\n }\n }\n }\n this.closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);\n }\n }\n};\n\n\nParserATNSimulator.prototype.canDropLoopEntryEdgeInLeftRecursiveRule = function(config) {\n // return False\n var p = config.state;\n // First check to see if we are in StarLoopEntryState generated during\n // left-recursion elimination. For efficiency, also check if\n // the context has an empty stack case. If so, it would mean\n // global FOLLOW so we can't perform optimization\n // Are we the special loop entry/exit state? or SLL wildcard\n if(p.stateType != ATNState.STAR_LOOP_ENTRY)\n return false;\n if(p.stateType != ATNState.STAR_LOOP_ENTRY || !p.isPrecedenceDecision ||\n config.context.isEmpty() || config.context.hasEmptyPath())\n return false;\n\n // Require all return states to return back to the same rule that p is in.\n var numCtxs = config.context.length;\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnState = this.atn.states[config.context.getReturnState(i)];\n if (returnState.ruleIndex != p.ruleIndex)\n return false;\n }\n\n var decisionStartState = p.transitions[0].target;\n var blockEndStateNum = decisionStartState.endState.stateNumber;\n var blockEndState = this.atn.states[blockEndStateNum];\n\n // Verify that the top of each stack context leads to loop entry/exit\n // state through epsilon edges and w/o leaving rule.\n for(var i=0; i<numCtxs; i++) { // for each stack context\n var returnStateNumber = config.context.getReturnState(i);\n var returnState = this.atn.states[returnStateNumber];\n // all states must have single outgoing epsilon edge\n if (returnState.transitions.length != 1 || !returnState.transitions[0].isEpsilon)\n return false;\n\n // Look for prefix op case like 'not expr', (' type ')' expr\n var returnStateTarget = returnState.transitions[0].target;\n if ( returnState.stateType == ATNState.BLOCK_END && returnStateTarget == p )\n continue;\n\n // Look for 'expr op expr' or case where expr's return state is block end\n // of (...)* internal block; the block end points to loop back\n // which points to p but we don't need to check that\n if ( returnState == blockEndState )\n continue;\n\n // Look for ternary expr ? expr : expr. The return state points at block end,\n // which points at loop entry state\n if ( returnStateTarget == blockEndState )\n continue;\n\n // Look for complex prefix 'between expr and expr' case where 2nd expr's\n // return state points at block end state of (...)* internal block\n if (returnStateTarget.stateType == ATNState.BLOCK_END && returnStateTarget.transitions.length == 1\n && returnStateTarget.transitions[0].isEpsilon && returnStateTarget.transitions[0].target == p)\n continue;\n\n // anything else ain't conforming\n return false;\n }\n return true;\n};\n\n\nParserATNSimulator.prototype.getRuleName = function( index) {\n if (this.parser!==null && index>=0) {\n return this.parser.ruleNames[index];\n } else {\n return \"<rule \" + index + \">\";\n }\n};\n\nParserATNSimulator.prototype.getEpsilonTarget = function(config, t, collectPredicates, inContext, fullCtx, treatEofAsEpsilon) {\n switch(t.serializationType) {\n case Transition.RULE:\n return this.ruleTransition(config, t);\n case Transition.PRECEDENCE:\n return this.precedenceTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.PREDICATE:\n return this.predTransition(config, t, collectPredicates, inContext, fullCtx);\n case Transition.ACTION:\n return this.actionTransition(config, t);\n case Transition.EPSILON:\n return new ATNConfig({state:t.target}, config);\n case Transition.ATOM:\n case Transition.RANGE:\n case Transition.SET:\n // EOF transitions act like epsilon transitions after the first EOF\n // transition is traversed\n if (treatEofAsEpsilon) {\n if (t.matches(Token.EOF, 0, 1)) {\n return new ATNConfig({state: t.target}, config);\n }\n }\n return null;\n default:\n \treturn null;\n }\n};\n\nParserATNSimulator.prototype.actionTransition = function(config, t) {\n if (this.debug) {\n var index = t.actionIndex==-1 ? 65535 : t.actionIndex;\n console.log(\"ACTION edge \" + t.ruleIndex + \":\" + index);\n }\n return new ATNConfig({state:t.target}, config);\n};\n\nParserATNSimulator.prototype.precedenceTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" +\n pt.precedence + \">=_p, ctx dependent=true\");\n if (this.parser!==null) {\n \tconsole.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && inContext) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.predTransition = function(config, pt, collectPredicates, inContext, fullCtx) {\n if (this.debug) {\n console.log(\"PRED (collectPredicates=\" + collectPredicates + \") \" + pt.ruleIndex +\n \":\" + pt.predIndex + \", ctx dependent=\" + pt.isCtxDependent);\n if (this.parser!==null) {\n console.log(\"context surrounding pred is \" + Utils.arrayToString(this.parser.getRuleInvocationStack()));\n }\n }\n var c = null;\n if (collectPredicates && ((pt.isCtxDependent && inContext) || ! pt.isCtxDependent)) {\n if (fullCtx) {\n // In full context mode, we can evaluate predicates on-the-fly\n // during closure, which dramatically reduces the size of\n // the config sets. It also obviates the need to test predicates\n // later during conflict resolution.\n var currentPosition = this._input.index;\n this._input.seek(this._startIndex);\n var predSucceeds = pt.getPredicate().evaluate(this.parser, this._outerContext);\n this._input.seek(currentPosition);\n if (predSucceeds) {\n c = new ATNConfig({state:pt.target}, config); // no pred context\n }\n } else {\n var newSemCtx = SemanticContext.andContext(config.semanticContext, pt.getPredicate());\n c = new ATNConfig({state:pt.target, semanticContext:newSemCtx}, config);\n }\n } else {\n c = new ATNConfig({state:pt.target}, config);\n }\n if (this.debug) {\n console.log(\"config from pred transition=\" + c);\n }\n return c;\n};\n\nParserATNSimulator.prototype.ruleTransition = function(config, t) {\n if (this.debug) {\n console.log(\"CALL rule \" + this.getRuleName(t.target.ruleIndex) + \", ctx=\" + config.context);\n }\n var returnState = t.followState;\n var newContext = SingletonPredictionContext.create(config.context, returnState.stateNumber);\n return new ATNConfig({state:t.target, context:newContext}, config );\n};\n\nParserATNSimulator.prototype.getConflictingAlts = function(configs) {\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.getAlts(altsets);\n};\n\n // Sam pointed out a problem with the previous definition, v3, of\n // ambiguous states. If we have another state associated with conflicting\n // alternatives, we should keep going. For example, the following grammar\n //\n // s : (ID | ID ID?) ';' ;\n //\n // When the ATN simulation reaches the state before ';', it has a DFA\n // state that looks like: [12|1|[], 6|2|[], 12|2|[]]. Naturally\n // 12|1|[] and 12|2|[] conflict, but we cannot stop processing this node\n // because alternative to has another way to continue, via [6|2|[]].\n // The key is that we have a single state that has config's only associated\n // with a single alternative, 2, and crucially the state transitions\n // among the configurations are all non-epsilon transitions. That means\n // we don't consider any conflicts that include alternative 2. So, we\n // ignore the conflict between alts 1 and 2. We ignore a set of\n // conflicting alts when there is an intersection with an alternative\n // associated with a single alt state in the state→config-list map.\n //\n // It's also the case that we might have two conflicting configurations but\n // also a 3rd nonconflicting configuration for a different alternative:\n // [1|1|[], 1|2|[], 8|3|[]]. This can come about from grammar:\n //\n // a : A | A | A B ;\n //\n // After matching input A, we reach the stop state for rule A, state 1.\n // State 8 is the state right before B. Clearly alternatives 1 and 2\n // conflict and no amount of further lookahead will separate the two.\n // However, alternative 3 will be able to continue and so we do not\n // stop working on this state. In the previous example, we're concerned\n // with states associated with the conflicting alternatives. Here alt\n // 3 is not associated with the conflicting configs, but since we can continue\n // looking for input reasonably, I don't declare the state done. We\n // ignore a set of conflicting alts when we have an alternative\n // that we still need to pursue.\n//\n\nParserATNSimulator.prototype.getConflictingAltsOrUniqueAlt = function(configs) {\n var conflictingAlts = null;\n if (configs.uniqueAlt!== ATN.INVALID_ALT_NUMBER) {\n conflictingAlts = new BitSet();\n conflictingAlts.add(configs.uniqueAlt);\n } else {\n conflictingAlts = configs.conflictingAlts;\n }\n return conflictingAlts;\n};\n\nParserATNSimulator.prototype.getTokenName = function( t) {\n if (t===Token.EOF) {\n return \"EOF\";\n }\n if( this.parser!==null && this.parser.literalNames!==null) {\n if (t >= this.parser.literalNames.length && t >= this.parser.symbolicNames.length) {\n console.log(\"\" + t + \" ttype out of range: \" + this.parser.literalNames);\n console.log(\"\" + this.parser.getInputStream().getTokens());\n } else {\n var name = this.parser.literalNames[t] || this.parser.symbolicNames[t];\n return name + \"<\" + t + \">\";\n }\n }\n return \"\" + t;\n};\n\nParserATNSimulator.prototype.getLookaheadName = function(input) {\n return this.getTokenName(input.LA(1));\n};\n\n// Used for debugging in adaptivePredict around execATN but I cut\n// it out for clarity now that alg. works well. We can leave this\n// \"dead\" code for a bit.\n//\nParserATNSimulator.prototype.dumpDeadEndConfigs = function(nvae) {\n console.log(\"dead end configs: \");\n var decs = nvae.getDeadEndConfigs();\n for(var i=0; i<decs.length; i++) {\n \tvar c = decs[i];\n var trans = \"no edges\";\n if (c.state.transitions.length>0) {\n var t = c.state.transitions[0];\n if (t instanceof AtomTransition) {\n trans = \"Atom \"+ this.getTokenName(t.label);\n } else if (t instanceof SetTransition) {\n var neg = (t instanceof NotSetTransition);\n trans = (neg ? \"~\" : \"\") + \"Set \" + t.set;\n }\n }\n console.error(c.toString(this.parser, true) + \":\" + trans);\n }\n};\n\nParserATNSimulator.prototype.noViableAlt = function(input, outerContext, configs, startIndex) {\n return new NoViableAltException(this.parser, input, input.get(startIndex), input.LT(1), configs, outerContext);\n};\n\nParserATNSimulator.prototype.getUniqueAlt = function(configs) {\n var alt = ATN.INVALID_ALT_NUMBER;\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n if (alt === ATN.INVALID_ALT_NUMBER) {\n alt = c.alt // found first alt\n } else if( c.alt!==alt) {\n return ATN.INVALID_ALT_NUMBER;\n }\n }\n return alt;\n};\n\n//\n// Add an edge to the DFA, if possible. This method calls\n// {@link //addDFAState} to ensure the {@code to} state is present in the\n// DFA. If {@code from} is {@code null}, or if {@code t} is outside the\n// range of edges that can be represented in the DFA tables, this method\n// returns without adding the edge to the DFA.\n//\n// <p>If {@code to} is {@code null}, this method returns {@code null}.\n// Otherwise, this method returns the {@link DFAState} returned by calling\n// {@link //addDFAState} for the {@code to} state.</p>\n//\n// @param dfa The DFA\n// @param from The source state for the edge\n// @param t The input symbol\n// @param to The target state for the edge\n//\n// @return If {@code to} is {@code null}, this method returns {@code null};\n// otherwise this method returns the result of calling {@link //addDFAState}\n// on {@code to}\n//\nParserATNSimulator.prototype.addDFAEdge = function(dfa, from_, t, to) {\n if( this.debug) {\n console.log(\"EDGE \" + from_ + \" -> \" + to + \" upon \" + this.getTokenName(t));\n }\n if (to===null) {\n return null;\n }\n to = this.addDFAState(dfa, to); // used existing if possible not incoming\n if (from_===null || t < -1 || t > this.atn.maxTokenType) {\n return to;\n }\n if (from_.edges===null) {\n from_.edges = [];\n }\n from_.edges[t+1] = to; // connect\n\n if (this.debug) {\n var literalNames = this.parser===null ? null : this.parser.literalNames;\n var symbolicNames = this.parser===null ? null : this.parser.symbolicNames;\n console.log(\"DFA=\\n\" + dfa.toString(literalNames, symbolicNames));\n }\n return to;\n};\n//\n// Add state {@code D} to the DFA if it is not already present, and return\n// the actual instance stored in the DFA. If a state equivalent to {@code D}\n// is already in the DFA, the existing state is returned. Otherwise this\n// method returns {@code D} after adding it to the DFA.\n//\n// <p>If {@code D} is {@link //ERROR}, this method returns {@link //ERROR} and\n// does not change the DFA.</p>\n//\n// @param dfa The dfa\n// @param D The DFA state to add\n// @return The state stored in the DFA. This will be either the existing\n// state if {@code D} is already in the DFA, or {@code D} itself if the\n// state was not already present.\n//\nParserATNSimulator.prototype.addDFAState = function(dfa, D) {\n if (D == ATNSimulator.ERROR) {\n return D;\n }\n var existing = dfa.states.get(D);\n if(existing!==null) {\n return existing;\n }\n D.stateNumber = dfa.states.length;\n if (! D.configs.readOnly) {\n D.configs.optimizeConfigs(this);\n D.configs.setReadonly(true);\n }\n dfa.states.add(D);\n if (this.debug) {\n console.log(\"adding new DFA state: \" + D);\n }\n return D;\n};\n\nParserATNSimulator.prototype.reportAttemptingFullContext = function(dfa, conflictingAlts, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAttemptingFullContext decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAttemptingFullContext(this.parser, dfa, startIndex, stopIndex, conflictingAlts, configs);\n }\n};\n\nParserATNSimulator.prototype.reportContextSensitivity = function(dfa, prediction, configs, startIndex, stopIndex) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportContextSensitivity decision=\" + dfa.decision + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportContextSensitivity(this.parser, dfa, startIndex, stopIndex, prediction, configs);\n }\n};\n\n// If context sensitive parsing, we know it's ambiguity not conflict//\nParserATNSimulator.prototype.reportAmbiguity = function(dfa, D, startIndex, stopIndex,\n exact, ambigAlts, configs ) {\n if (this.debug || this.retry_debug) {\n var interval = new Interval(startIndex, stopIndex + 1);\n console.log(\"reportAmbiguity \" + ambigAlts + \":\" + configs +\n \", input=\" + this.parser.getTokenStream().getText(interval));\n }\n if (this.parser!==null) {\n this.parser.getErrorListenerDispatch().reportAmbiguity(this.parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);\n }\n};\n\nexports.ParserATNSimulator = ParserATNSimulator;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n//\n// This enumeration defines the prediction modes available in ANTLR 4 along with\n// utility methods for analyzing configuration sets for conflicts and/or\n// ambiguities.\n\nvar Set = require('./../Utils').Set;\nvar Map = require('./../Utils').Map;\nvar BitSet = require('./../Utils').BitSet;\nvar AltDict = require('./../Utils').AltDict;\nvar ATN = require('./ATN').ATN;\nvar RuleStopState = require('./ATNState').RuleStopState;\nvar ATNConfigSet = require('./ATNConfigSet').ATNConfigSet;\nvar ATNConfig = require('./ATNConfig').ATNConfig;\nvar SemanticContext = require('./SemanticContext').SemanticContext;\nvar Hash = require(\"../Utils\").Hash;\nvar hashStuff = require('./../Utils').hashStuff;\nvar equalArrays = require('./../Utils').equalArrays;\n\nfunction PredictionMode() {\n\treturn this;\n}\n\n//\n// The SLL(*) prediction mode. This prediction mode ignores the current\n// parser context when making predictions. This is the fastest prediction\n// mode, and provides correct results for many grammars. This prediction\n// mode is more powerful than the prediction mode provided by ANTLR 3, but\n// may result in syntax errors for grammar and input combinations which are\n// not SLL.\n//\n// <p>\n// When using this prediction mode, the parser will either return a correct\n// parse tree (i.e. the same parse tree that would be returned with the\n// {@link //LL} prediction mode), or it will report a syntax error. If a\n// syntax error is encountered when using the {@link //SLL} prediction mode,\n// it may be due to either an actual syntax error in the input or indicate\n// that the particular combination of grammar and input requires the more\n// powerful {@link //LL} prediction abilities to complete successfully.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.SLL = 0;\n//\n// The LL(*) prediction mode. This prediction mode allows the current parser\n// context to be used for resolving SLL conflicts that occur during\n// prediction. This is the fastest prediction mode that guarantees correct\n// parse results for all combinations of grammars with syntactically correct\n// inputs.\n//\n// <p>\n// When using this prediction mode, the parser will make correct decisions\n// for all syntactically-correct grammar and input combinations. However, in\n// cases where the grammar is truly ambiguous this prediction mode might not\n// report a precise answer for <em>exactly which</em> alternatives are\n// ambiguous.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL = 1;\n//\n// The LL(*) prediction mode with exact ambiguity detection. In addition to\n// the correctness guarantees provided by the {@link //LL} prediction mode,\n// this prediction mode instructs the prediction algorithm to determine the\n// complete and exact set of ambiguous alternatives for every ambiguous\n// decision encountered while parsing.\n//\n// <p>\n// This prediction mode may be used for diagnosing ambiguities during\n// grammar development. Due to the performance overhead of calculating sets\n// of ambiguous alternatives, this prediction mode should be avoided when\n// the exact results are not necessary.</p>\n//\n// <p>\n// This prediction mode does not provide any guarantees for prediction\n// behavior for syntactically-incorrect inputs.</p>\n//\nPredictionMode.LL_EXACT_AMBIG_DETECTION = 2;\n\n\n//\n// Computes the SLL prediction termination condition.\n//\n// <p>\n// This method computes the SLL prediction termination condition for both of\n// the following cases.</p>\n//\n// <ul>\n// <li>The usual SLL+LL fallback upon SLL conflict</li>\n// <li>Pure SLL without LL fallback</li>\n// </ul>\n//\n// <p><strong>COMBINED SLL+LL PARSING</strong></p>\n//\n// <p>When LL-fallback is enabled upon SLL conflict, correct predictions are\n// ensured regardless of how the termination condition is computed by this\n// method. Due to the substantially higher cost of LL prediction, the\n// prediction should only fall back to LL when the additional lookahead\n// cannot lead to a unique SLL prediction.</p>\n//\n// <p>Assuming combined SLL+LL parsing, an SLL configuration set with only\n// conflicting subsets should fall back to full LL, even if the\n// configuration sets don't resolve to the same alternative (e.g.\n// {@code {1,2}} and {@code {3,4}}. If there is at least one non-conflicting\n// configuration, SLL could continue with the hopes that more lookahead will\n// resolve via one of those non-conflicting configurations.</p>\n//\n// <p>Here's the prediction termination rule them: SLL (for SLL+LL parsing)\n// stops when it sees only conflicting configuration subsets. In contrast,\n// full LL keeps going when there is uncertainty.</p>\n//\n// <p><strong>HEURISTIC</strong></p>\n//\n// <p>As a heuristic, we stop prediction when we see any conflicting subset\n// unless we see a state that only has one alternative associated with it.\n// The single-alt-state thing lets prediction continue upon rules like\n// (otherwise, it would admit defeat too soon):</p>\n//\n// <p>{@code [12|1|[], 6|2|[], 12|2|[]]. s : (ID | ID ID?) ';' ;}</p>\n//\n// <p>When the ATN simulation reaches the state before {@code ';'}, it has a\n// DFA state that looks like: {@code [12|1|[], 6|2|[], 12|2|[]]}. Naturally\n// {@code 12|1|[]} and {@code 12|2|[]} conflict, but we cannot stop\n// processing this node because alternative to has another way to continue,\n// via {@code [6|2|[]]}.</p>\n//\n// <p>It also let's us continue for this rule:</p>\n//\n// <p>{@code [1|1|[], 1|2|[], 8|3|[]] a : A | A | A B ;}</p>\n//\n// <p>After matching input A, we reach the stop state for rule A, state 1.\n// State 8 is the state right before B. Clearly alternatives 1 and 2\n// conflict and no amount of further lookahead will separate the two.\n// However, alternative 3 will be able to continue and so we do not stop\n// working on this state. In the previous example, we're concerned with\n// states associated with the conflicting alternatives. Here alt 3 is not\n// associated with the conflicting configs, but since we can continue\n// looking for input reasonably, don't declare the state done.</p>\n//\n// <p><strong>PURE SLL PARSING</strong></p>\n//\n// <p>To handle pure SLL parsing, all we have to do is make sure that we\n// combine stack contexts for configurations that differ only by semantic\n// predicate. From there, we can do the usual SLL termination heuristic.</p>\n//\n// <p><strong>PREDICATES IN SLL+LL PARSING</strong></p>\n//\n// <p>SLL decisions don't evaluate predicates until after they reach DFA stop\n// states because they need to create the DFA cache that works in all\n// semantic situations. In contrast, full LL evaluates predicates collected\n// during start state computation so it can ignore predicates thereafter.\n// This means that SLL termination detection can totally ignore semantic\n// predicates.</p>\n//\n// <p>Implementation-wise, {@link ATNConfigSet} combines stack contexts but not\n// semantic predicate contexts so we might see two configurations like the\n// following.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p})}</p>\n//\n// <p>Before testing these configurations against others, we have to merge\n// {@code x} and {@code x'} (without modifying the existing configurations).\n// For example, we test {@code (x+x')==x''} when looking for conflicts in\n// the following configurations.</p>\n//\n// <p>{@code (s, 1, x, {}), (s, 1, x', {p}), (s, 2, x'', {})}</p>\n//\n// <p>If the configuration set has predicates (as indicated by\n// {@link ATNConfigSet//hasSemanticContext}), this algorithm makes a copy of\n// the configurations to strip out all of the predicates so that a standard\n// {@link ATNConfigSet} will merge everything ignoring predicates.</p>\n//\nPredictionMode.hasSLLConflictTerminatingPrediction = function( mode, configs) {\n // Configs in rule stop states indicate reaching the end of the decision\n // rule (local context) or end of start rule (full context). If all\n // configs meet this condition, then none of the configurations is able\n // to match additional input so we terminate prediction.\n //\n if (PredictionMode.allConfigsInRuleStopStates(configs)) {\n return true;\n }\n // pure SLL mode parsing\n if (mode === PredictionMode.SLL) {\n // Don't bother with combining configs from different semantic\n // contexts if we can fail over to full LL; costs more time\n // since we'll often fail over anyway.\n if (configs.hasSemanticContext) {\n // dup configs, tossing out semantic predicates\n var dup = new ATNConfigSet();\n for(var i=0;i<configs.items.length;i++) {\n \tvar c = configs.items[i];\n c = new ATNConfig({semanticContext:SemanticContext.NONE}, c);\n dup.add(c);\n }\n configs = dup;\n }\n // now we have combined contexts for configs with dissimilar preds\n }\n // pure SLL or combined SLL+LL mode parsing\n var altsets = PredictionMode.getConflictingAltSubsets(configs);\n return PredictionMode.hasConflictingAltSet(altsets) && !PredictionMode.hasStateAssociatedWithOneAlt(configs);\n};\n\n// Checks if any configuration in {@code configs} is in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if any configuration in {@code configs} is in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.hasConfigInRuleStopState = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (c.state instanceof RuleStopState) {\n return true;\n }\n\t}\n return false;\n};\n\n// Checks if all configurations in {@code configs} are in a\n// {@link RuleStopState}. Configurations meeting this condition have reached\n// the end of the decision rule (local context) or end of start rule (full\n// context).\n//\n// @param configs the configuration set to test\n// @return {@code true} if all configurations in {@code configs} are in a\n// {@link RuleStopState}, otherwise {@code false}\nPredictionMode.allConfigsInRuleStopStates = function(configs) {\n\tfor(var i=0;i<configs.items.length;i++) {\n\t\tvar c = configs.items[i];\n if (!(c.state instanceof RuleStopState)) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Full LL prediction termination.\n//\n// <p>Can we stop looking ahead during ATN simulation or is there some\n// uncertainty as to which alternative we will ultimately pick, after\n// consuming more input? Even if there are partial conflicts, we might know\n// that everything is going to resolve to the same minimum alternative. That\n// means we can stop since no more lookahead will change that fact. On the\n// other hand, there might be multiple conflicts that resolve to different\n// minimums. That means we need more look ahead to decide which of those\n// alternatives we should predict.</p>\n//\n// <p>The basic idea is to split the set of configurations {@code C}, into\n// conflicting subsets {@code (s, _, ctx, _)} and singleton subsets with\n// non-conflicting configurations. Two configurations conflict if they have\n// identical {@link ATNConfig//state} and {@link ATNConfig//context} values\n// but different {@link ATNConfig//alt} value, e.g. {@code (s, i, ctx, _)}\n// and {@code (s, j, ctx, _)} for {@code i!=j}.</p>\n//\n// <p>Reduce these configuration subsets to the set of possible alternatives.\n// You can compute the alternative subsets in one pass as follows:</p>\n//\n// <p>{@code A_s,ctx = {i | (s, i, ctx, _)}} for each configuration in\n// {@code C} holding {@code s} and {@code ctx} fixed.</p>\n//\n// <p>Or in pseudo-code, for each configuration {@code c} in {@code C}:</p>\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n//\n// <p>The values in {@code map} are the set of {@code A_s,ctx} sets.</p>\n//\n// <p>If {@code |A_s,ctx|=1} then there is no conflict associated with\n// {@code s} and {@code ctx}.</p>\n//\n// <p>Reduce the subsets to singletons by choosing a minimum of each subset. If\n// the union of these alternative subsets is a singleton, then no amount of\n// more lookahead will help us. We will always pick that alternative. If,\n// however, there is more than one alternative, then we are uncertain which\n// alternative to predict and must continue looking for resolution. We may\n// or may not discover an ambiguity in the future, even if there are no\n// conflicting subsets this round.</p>\n//\n// <p>The biggest sin is to terminate early because it means we've made a\n// decision but were uncertain as to the eventual outcome. We haven't used\n// enough lookahead. On the other hand, announcing a conflict too late is no\n// big deal; you will still have the conflict. It's just inefficient. It\n// might even look until the end of file.</p>\n//\n// <p>No special consideration for semantic predicates is required because\n// predicates are evaluated on-the-fly for full LL prediction, ensuring that\n// no configuration contains a semantic context during the termination\n// check.</p>\n//\n// <p><strong>CONFLICTING CONFIGS</strong></p>\n//\n// <p>Two configurations {@code (s, i, x)} and {@code (s, j, x')}, conflict\n// when {@code i!=j} but {@code x=x'}. Because we merge all\n// {@code (s, i, _)} configurations together, that means that there are at\n// most {@code n} configurations associated with state {@code s} for\n// {@code n} possible alternatives in the decision. The merged stacks\n// complicate the comparison of configuration contexts {@code x} and\n// {@code x'}. Sam checks to see if one is a subset of the other by calling\n// merge and checking to see if the merged result is either {@code x} or\n// {@code x'}. If the {@code x} associated with lowest alternative {@code i}\n// is the superset, then {@code i} is the only possible prediction since the\n// others resolve to {@code min(i)} as well. However, if {@code x} is\n// associated with {@code j>i} then at least one stack configuration for\n// {@code j} is not in conflict with alternative {@code i}. The algorithm\n// should keep going, looking for more lookahead due to the uncertainty.</p>\n//\n// <p>For simplicity, I'm doing a equality check between {@code x} and\n// {@code x'} that lets the algorithm continue to consume lookahead longer\n// than necessary. The reason I like the equality is of course the\n// simplicity but also because that is the test you need to detect the\n// alternatives that are actually in conflict.</p>\n//\n// <p><strong>CONTINUE/STOP RULE</strong></p>\n//\n// <p>Continue if union of resolved alternative sets from non-conflicting and\n// conflicting alternative subsets has more than one alternative. We are\n// uncertain about which alternative to predict.</p>\n//\n// <p>The complete set of alternatives, {@code [i for (_,i,_)]}, tells us which\n// alternatives are still in the running for the amount of input we've\n// consumed at this point. The conflicting sets let us to strip away\n// configurations that won't lead to more states because we resolve\n// conflicts to the configuration with a minimum alternate for the\n// conflicting set.</p>\n//\n// <p><strong>CASES</strong></p>\n//\n// <ul>\n//\n// <li>no conflicts and more than 1 alternative in set => continue</li>\n//\n// <li> {@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s, 3, z)},\n// {@code (s', 1, y)}, {@code (s', 2, y)} yields non-conflicting set\n// {@code {3}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1,3}} => continue\n// </li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)}, {@code (s'', 1, z)} yields non-conflicting set\n// {@code {1}} U conflicting sets {@code min({1,2})} U {@code min({1,2})} =\n// {@code {1}} => stop and predict 1</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 1, y)},\n// {@code (s', 2, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {1}} = {@code {1}} => stop and predict 1, can announce\n// ambiguity {@code {1,2}}</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 2, y)},\n// {@code (s', 3, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {2}} = {@code {1,2}} => continue</li>\n//\n// <li>{@code (s, 1, x)}, {@code (s, 2, x)}, {@code (s', 3, y)},\n// {@code (s', 4, y)} yields conflicting, reduced sets {@code {1}} U\n// {@code {3}} = {@code {1,3}} => continue</li>\n//\n// </ul>\n//\n// <p><strong>EXACT AMBIGUITY DETECTION</strong></p>\n//\n// <p>If all states report the same conflicting set of alternatives, then we\n// know we have the exact ambiguity set.</p>\n//\n// <p><code>|A_<em>i</em>|>1</code> and\n// <code>A_<em>i</em> = A_<em>j</em></code> for all <em>i</em>, <em>j</em>.</p>\n//\n// <p>In other words, we continue examining lookahead until all {@code A_i}\n// have more than one alternative and all {@code A_i} are the same. If\n// {@code A={{1,2}, {1,3}}}, then regular LL prediction would terminate\n// because the resolved set is {@code {1}}. To determine what the real\n// ambiguity is, we have to know whether the ambiguity is between one and\n// two or one and three so we keep going. We can only stop prediction when\n// we need exact ambiguity detection when the sets look like\n// {@code A={{1,2}}} or {@code {{1,2},{1,2}}}, etc...</p>\n//\nPredictionMode.resolvesToJustOneViableAlt = function(altsets) {\n return PredictionMode.getSingleViableAlt(altsets);\n};\n\n//\n// Determines if every alternative subset in {@code altsets} contains more\n// than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every {@link BitSet} in {@code altsets} has\n// {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n//\nPredictionMode.allSubsetsConflict = function(altsets) {\n return ! PredictionMode.hasNonConflictingAltSet(altsets);\n};\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// exactly one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} 1, otherwise {@code false}\n//\nPredictionMode.hasNonConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length===1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if any single alternative subset in {@code altsets} contains\n// more than one alternative.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if {@code altsets} contains a {@link BitSet} with\n// {@link BitSet//cardinality cardinality} > 1, otherwise {@code false}\n//\nPredictionMode.hasConflictingAltSet = function(altsets) {\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (alts.length>1) {\n return true;\n }\n\t}\n return false;\n};\n\n//\n// Determines if every alternative subset in {@code altsets} is equivalent.\n//\n// @param altsets a collection of alternative subsets\n// @return {@code true} if every member of {@code altsets} is equal to the\n// others, otherwise {@code false}\n//\nPredictionMode.allSubsetsEqual = function(altsets) {\n var first = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n if (first === null) {\n first = alts;\n } else if (alts!==first) {\n return false;\n }\n\t}\n return true;\n};\n\n//\n// Returns the unique alternative predicted by all alternative subsets in\n// {@code altsets}. If no such alternative exists, this method returns\n// {@link ATN//INVALID_ALT_NUMBER}.\n//\n// @param altsets a collection of alternative subsets\n//\nPredictionMode.getUniqueAlt = function(altsets) {\n var all = PredictionMode.getAlts(altsets);\n if (all.length===1) {\n return all.minValue();\n } else {\n return ATN.INVALID_ALT_NUMBER;\n }\n};\n\n// Gets the complete set of represented alternatives for a collection of\n// alternative subsets. This method returns the union of each {@link BitSet}\n// in {@code altsets}.\n//\n// @param altsets a collection of alternative subsets\n// @return the set of represented alternatives in {@code altsets}\n//\nPredictionMode.getAlts = function(altsets) {\n var all = new BitSet();\n altsets.map( function(alts) { all.or(alts); });\n return all;\n};\n\n//\n// This function gets the conflicting alt subsets from a configuration set.\n// For each configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c] U= c.{@link ATNConfig//alt alt} // map hash/equals uses s and x, not\n// alt and not pred\n// </pre>\n\nPredictionMode.getConflictingAltSubsets = function(configs) {\n var configToAlts = new Map();\n configToAlts.hashFunction = function(cfg) { hashStuff(cfg.state.stateNumber, cfg.context); };\n configToAlts.equalsFunction = function(c1, c2) { return c1.state.stateNumber==c2.state.stateNumber && c1.context.equals(c2.context);}\n configs.items.map(function(cfg) {\n var alts = configToAlts.get(cfg);\n if (alts === null) {\n alts = new BitSet();\n configToAlts.put(cfg, alts);\n }\n alts.add(cfg.alt);\n\t});\n return configToAlts.getValues();\n};\n\n//\n// Get a map from state to alt subset from a configuration set. For each\n// configuration {@code c} in {@code configs}:\n//\n// <pre>\n// map[c.{@link ATNConfig//state state}] U= c.{@link ATNConfig//alt alt}\n// </pre>\n//\nPredictionMode.getStateToAltMap = function(configs) {\n var m = new AltDict();\n configs.items.map(function(c) {\n var alts = m.get(c.state);\n if (alts === null) {\n alts = new BitSet();\n m.put(c.state, alts);\n }\n alts.add(c.alt);\n });\n return m;\n};\n\nPredictionMode.hasStateAssociatedWithOneAlt = function(configs) {\n var values = PredictionMode.getStateToAltMap(configs).values();\n for(var i=0;i<values.length;i++) {\n if (values[i].length===1) {\n return true;\n }\n }\n return false;\n};\n\nPredictionMode.getSingleViableAlt = function(altsets) {\n var result = null;\n\tfor(var i=0;i<altsets.length;i++) {\n\t\tvar alts = altsets[i];\n var minAlt = alts.minValue();\n if(result===null) {\n result = minAlt;\n } else if(result!==minAlt) { // more than 1 viable alt\n return ATN.INVALID_ALT_NUMBER;\n }\n\t}\n return result;\n};\n\nexports.PredictionMode = PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// A tree structure used to record the semantic context in which\n// an ATN configuration is valid. It's either a single predicate,\n// a conjunction {@code p1&&p2}, or a sum of products {@code p1||p2}.\n//\n// <p>I have scoped the {@link AND}, {@link OR}, and {@link Predicate} subclasses of\n// {@link SemanticContext} within the scope of this outer class.</p>\n//\n\nvar Set = require('./../Utils').Set;\nvar Hash = require('./../Utils').Hash;\n\nfunction SemanticContext() {\n\treturn this;\n}\n\nSemanticContext.prototype.hashCode = function() {\n var hash = new Hash();\n this.updateHashCode(hash);\n return hash.finish();\n};\n\n// For context independent predicates, we evaluate them without a local\n// context (i.e., null context). That way, we can evaluate them without\n// having to create proper rule-specific context during prediction (as\n// opposed to the parser, which creates them naturally). In a practical\n// sense, this avoids a cast exception from RuleContext to myruleContext.\n//\n// <p>For context dependent predicates, we must pass in a local context so that\n// references such as $arg evaluate properly as _localctx.arg. We only\n// capture context dependent predicates in the context in which we begin\n// prediction, so we passed in the outer context here in case of context\n// dependent predicate evaluation.</p>\n//\nSemanticContext.prototype.evaluate = function(parser, outerContext) {\n};\n\n//\n// Evaluate the precedence predicates for the context and reduce the result.\n//\n// @param parser The parser instance.\n// @param outerContext The current parser context object.\n// @return The simplified semantic context after precedence predicates are\n// evaluated, which will be one of the following values.\n// <ul>\n// <li>{@link //NONE}: if the predicate simplifies to {@code true} after\n// precedence predicates are evaluated.</li>\n// <li>{@code null}: if the predicate simplifies to {@code false} after\n// precedence predicates are evaluated.</li>\n// <li>{@code this}: if the semantic context is not changed as a result of\n// precedence predicate evaluation.</li>\n// <li>A non-{@code null} {@link SemanticContext}: the new simplified\n// semantic context after precedence predicates are evaluated.</li>\n// </ul>\n//\nSemanticContext.prototype.evalPrecedence = function(parser, outerContext) {\n\treturn this;\n};\n\nSemanticContext.andContext = function(a, b) {\n\tif (a === null || a === SemanticContext.NONE) {\n\t\treturn b;\n\t}\n\tif (b === null || b === SemanticContext.NONE) {\n\t\treturn a;\n\t}\n\tvar result = new AND(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nSemanticContext.orContext = function(a, b) {\n\tif (a === null) {\n\t\treturn b;\n\t}\n\tif (b === null) {\n\t\treturn a;\n\t}\n\tif (a === SemanticContext.NONE || b === SemanticContext.NONE) {\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = new OR(a, b);\n\tif (result.opnds.length === 1) {\n\t\treturn result.opnds[0];\n\t} else {\n\t\treturn result;\n\t}\n};\n\nfunction Predicate(ruleIndex, predIndex, isCtxDependent) {\n\tSemanticContext.call(this);\n\tthis.ruleIndex = ruleIndex === undefined ? -1 : ruleIndex;\n\tthis.predIndex = predIndex === undefined ? -1 : predIndex;\n\tthis.isCtxDependent = isCtxDependent === undefined ? false : isCtxDependent; // e.g., $i ref in pred\n\treturn this;\n}\n\nPredicate.prototype = Object.create(SemanticContext.prototype);\nPredicate.prototype.constructor = Predicate;\n\n//The default {@link SemanticContext}, which is semantically equivalent to\n//a predicate of the form {@code {true}?}.\n//\nSemanticContext.NONE = new Predicate();\n\n\nPredicate.prototype.evaluate = function(parser, outerContext) {\n\tvar localctx = this.isCtxDependent ? outerContext : null;\n\treturn parser.sempred(localctx, this.ruleIndex, this.predIndex);\n};\n\nPredicate.prototype.updateHashCode = function(hash) {\n\thash.update(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof Predicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.ruleIndex === other.ruleIndex &&\n\t\t\t\tthis.predIndex === other.predIndex &&\n\t\t\t\tthis.isCtxDependent === other.isCtxDependent;\n\t}\n};\n\nPredicate.prototype.toString = function() {\n\treturn \"{\" + this.ruleIndex + \":\" + this.predIndex + \"}?\";\n};\n\nfunction PrecedencePredicate(precedence) {\n\tSemanticContext.call(this);\n\tthis.precedence = precedence === undefined ? 0 : precedence;\n}\n\nPrecedencePredicate.prototype = Object.create(SemanticContext.prototype);\nPrecedencePredicate.prototype.constructor = PrecedencePredicate;\n\nPrecedencePredicate.prototype.evaluate = function(parser, outerContext) {\n\treturn parser.precpred(outerContext, this.precedence);\n};\n\nPrecedencePredicate.prototype.evalPrecedence = function(parser, outerContext) {\n\tif (parser.precpred(outerContext, this.precedence)) {\n\t\treturn SemanticContext.NONE;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nPrecedencePredicate.prototype.compareTo = function(other) {\n\treturn this.precedence - other.precedence;\n};\n\nPrecedencePredicate.prototype.updateHashCode = function(hash) {\n hash.update(31);\n};\n\nPrecedencePredicate.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof PrecedencePredicate)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.precedence === other.precedence;\n\t}\n};\n\nPrecedencePredicate.prototype.toString = function() {\n\treturn \"{\"+this.precedence+\">=prec}?\";\n};\n\n\n\nPrecedencePredicate.filterPrecedencePredicates = function(set) {\n\tvar result = [];\n\tset.values().map( function(context) {\n\t\tif (context instanceof PrecedencePredicate) {\n\t\t\tresult.push(context);\n\t\t}\n\t});\n\treturn result;\n};\n\n\n// A semantic context which is true whenever none of the contained contexts\n// is false.\n//\nfunction AND(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof AND) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof AND) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the lowest precedence\n\t\tvar reduced = null;\n\t\tprecedencePredicates.map( function(p) {\n\t\t\tif(reduced===null || p.precedence<reduced.precedence) {\n\t\t\t\treduced = p;\n\t\t\t}\n\t\t});\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nAND.prototype = Object.create(SemanticContext.prototype);\nAND.prototype.constructor = AND;\n\nAND.prototype.equals = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof AND)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nAND.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"AND\");\n};\n//\n// {@inheritDoc}\n//\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nAND.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (!this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nAND.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === null) {\n\t\t\t// The AND context is false if any element is false\n\t\t\treturn null;\n\t\t} else if (evaluated !== SemanticContext.NONE) {\n\t\t\t// Reduce the result by skipping true elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were true, so the AND context is true\n\t\treturn SemanticContext.NONE;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\tresult = result === null ? o : SemanticContext.andContext(result, o);\n\t});\n\treturn result;\n};\n\nAND.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"&& \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\n//\n// A semantic context which is true whenever at least one of the contained\n// contexts is true.\n//\nfunction OR(a, b) {\n\tSemanticContext.call(this);\n\tvar operands = new Set();\n\tif (a instanceof OR) {\n\t\ta.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(a);\n\t}\n\tif (b instanceof OR) {\n\t\tb.opnds.map(function(o) {\n\t\t\toperands.add(o);\n\t\t});\n\t} else {\n\t\toperands.add(b);\n\t}\n\n\tvar precedencePredicates = PrecedencePredicate.filterPrecedencePredicates(operands);\n\tif (precedencePredicates.length > 0) {\n\t\t// interested in the transition with the highest precedence\n\t\tvar s = precedencePredicates.sort(function(a, b) {\n\t\t\treturn a.compareTo(b);\n\t\t});\n\t\tvar reduced = s[s.length-1];\n\t\toperands.add(reduced);\n\t}\n\tthis.opnds = operands.values();\n\treturn this;\n}\n\nOR.prototype = Object.create(SemanticContext.prototype);\nOR.prototype.constructor = OR;\n\nOR.prototype.constructor = function(other) {\n\tif (this === other) {\n\t\treturn true;\n\t} else if (!(other instanceof OR)) {\n\t\treturn false;\n\t} else {\n\t\treturn this.opnds === other.opnds;\n\t}\n};\n\nOR.prototype.updateHashCode = function(hash) {\n hash.update(this.opnds, \"OR\");\n};\n\n// <p>\n// The evaluation of predicates by this context is short-circuiting, but\n// unordered.</p>\n//\nOR.prototype.evaluate = function(parser, outerContext) {\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tif (this.opnds[i].evaluate(parser, outerContext)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nOR.prototype.evalPrecedence = function(parser, outerContext) {\n\tvar differs = false;\n\tvar operands = [];\n\tfor (var i = 0; i < this.opnds.length; i++) {\n\t\tvar context = this.opnds[i];\n\t\tvar evaluated = context.evalPrecedence(parser, outerContext);\n\t\tdiffers |= (evaluated !== context);\n\t\tif (evaluated === SemanticContext.NONE) {\n\t\t\t// The OR context is true if any element is true\n\t\t\treturn SemanticContext.NONE;\n\t\t} else if (evaluated !== null) {\n\t\t\t// Reduce the result by skipping false elements\n\t\t\toperands.push(evaluated);\n\t\t}\n\t}\n\tif (!differs) {\n\t\treturn this;\n\t}\n\tif (operands.length === 0) {\n\t\t// all elements were false, so the OR context is false\n\t\treturn null;\n\t}\n\tvar result = null;\n\toperands.map(function(o) {\n\t\treturn result === null ? o : SemanticContext.orContext(result, o);\n\t});\n\treturn result;\n};\n\nOR.prototype.toString = function() {\n\tvar s = \"\";\n\tthis.opnds.map(function(o) {\n\t\ts += \"|| \" + o.toString();\n\t});\n\treturn s.length > 3 ? s.slice(3) : s;\n};\n\nexports.SemanticContext = SemanticContext;\nexports.PrecedencePredicate = PrecedencePredicate;\nexports.Predicate = Predicate;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n// An ATN transition between any two ATN states. Subclasses define\n// atom, set, epsilon, action, predicate, rule transitions.\n//\n// <p>This is a one way link. It emanates from a state (usually via a list of\n// transitions) and has a target state.</p>\n//\n// <p>Since we never have to change the ATN transitions once we construct it,\n// we can fix these transitions as specific classes. The DFA transitions\n// on the other hand need to update the labels as it adds transitions to\n// the states. We'll use the term Edge for the DFA to distinguish them from\n// ATN transitions.</p>\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\nvar Predicate = require('./SemanticContext').Predicate;\nvar PrecedencePredicate = require('./SemanticContext').PrecedencePredicate;\n\nfunction Transition (target) {\n // The target of this transition.\n if (target===undefined || target===null) {\n throw \"target cannot be null.\";\n }\n this.target = target;\n // Are we epsilon, action, sempred?\n this.isEpsilon = false;\n this.label = null;\n return this;\n}\n // constants for serialization\nTransition.EPSILON = 1;\nTransition.RANGE = 2;\nTransition.RULE = 3;\nTransition.PREDICATE = 4; // e.g., {isType(input.LT(1))}?\nTransition.ATOM = 5;\nTransition.ACTION = 6;\nTransition.SET = 7; // ~(A|B) or ~atom, wildcard, which convert to next 2\nTransition.NOT_SET = 8;\nTransition.WILDCARD = 9;\nTransition.PRECEDENCE = 10;\n\nTransition.serializationNames = [\n \"INVALID\",\n \"EPSILON\",\n \"RANGE\",\n \"RULE\",\n \"PREDICATE\",\n \"ATOM\",\n \"ACTION\",\n \"SET\",\n \"NOT_SET\",\n \"WILDCARD\",\n \"PRECEDENCE\"\n ];\n\nTransition.serializationTypes = {\n EpsilonTransition: Transition.EPSILON,\n RangeTransition: Transition.RANGE,\n RuleTransition: Transition.RULE,\n PredicateTransition: Transition.PREDICATE,\n AtomTransition: Transition.ATOM,\n ActionTransition: Transition.ACTION,\n SetTransition: Transition.SET,\n NotSetTransition: Transition.NOT_SET,\n WildcardTransition: Transition.WILDCARD,\n PrecedencePredicateTransition: Transition.PRECEDENCE\n };\n\n\n// TODO: make all transitions sets? no, should remove set edges\nfunction AtomTransition(target, label) {\n\tTransition.call(this, target);\n\tthis.label_ = label; // The token type or character value; or, signifies special label.\n this.label = this.makeLabel();\n this.serializationType = Transition.ATOM;\n return this;\n}\n\nAtomTransition.prototype = Object.create(Transition.prototype);\nAtomTransition.prototype.constructor = AtomTransition;\n\nAtomTransition.prototype.makeLabel = function() {\n\tvar s = new IntervalSet();\n s.addOne(this.label_);\n return s;\n};\n\nAtomTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n return this.label_ === symbol;\n};\n\nAtomTransition.prototype.toString = function() {\n\treturn this.label_;\n};\n\nfunction RuleTransition(ruleStart, ruleIndex, precedence, followState) {\n\tTransition.call(this, ruleStart);\n this.ruleIndex = ruleIndex; // ptr to the rule definition object for this rule ref\n this.precedence = precedence;\n this.followState = followState; // what node to begin computations following ref to rule\n this.serializationType = Transition.RULE;\n this.isEpsilon = true;\n return this;\n}\n\nRuleTransition.prototype = Object.create(Transition.prototype);\nRuleTransition.prototype.constructor = RuleTransition;\n\nRuleTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\n\nfunction EpsilonTransition(target, outermostPrecedenceReturn) {\n\tTransition.call(this, target);\n this.serializationType = Transition.EPSILON;\n this.isEpsilon = true;\n this.outermostPrecedenceReturn = outermostPrecedenceReturn;\n return this;\n}\n\nEpsilonTransition.prototype = Object.create(Transition.prototype);\nEpsilonTransition.prototype.constructor = EpsilonTransition;\n\nEpsilonTransition.prototype.matches = function( symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nEpsilonTransition.prototype.toString = function() {\n\treturn \"epsilon\";\n};\n\nfunction RangeTransition(target, start, stop) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.RANGE;\n this.start = start;\n this.stop = stop;\n this.label = this.makeLabel();\n return this;\n}\n\nRangeTransition.prototype = Object.create(Transition.prototype);\nRangeTransition.prototype.constructor = RangeTransition;\n\nRangeTransition.prototype.makeLabel = function() {\n var s = new IntervalSet();\n s.addRange(this.start, this.stop);\n return s;\n};\n\nRangeTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= this.start && symbol <= this.stop;\n};\n\nRangeTransition.prototype.toString = function() {\n\treturn \"'\" + String.fromCharCode(this.start) + \"'..'\" + String.fromCharCode(this.stop) + \"'\";\n};\n\nfunction AbstractPredicateTransition(target) {\n\tTransition.call(this, target);\n\treturn this;\n}\n\nAbstractPredicateTransition.prototype = Object.create(Transition.prototype);\nAbstractPredicateTransition.prototype.constructor = AbstractPredicateTransition;\n\nfunction PredicateTransition(target, ruleIndex, predIndex, isCtxDependent) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PREDICATE;\n this.ruleIndex = ruleIndex;\n this.predIndex = predIndex;\n this.isCtxDependent = isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nPredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPredicateTransition.prototype.constructor = PredicateTransition;\n\nPredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPredicateTransition.prototype.getPredicate = function() {\n\treturn new Predicate(this.ruleIndex, this.predIndex, this.isCtxDependent);\n};\n\nPredicateTransition.prototype.toString = function() {\n\treturn \"pred_\" + this.ruleIndex + \":\" + this.predIndex;\n};\n\nfunction ActionTransition(target, ruleIndex, actionIndex, isCtxDependent) {\n\tTransition.call(this, target);\n this.serializationType = Transition.ACTION;\n this.ruleIndex = ruleIndex;\n this.actionIndex = actionIndex===undefined ? -1 : actionIndex;\n this.isCtxDependent = isCtxDependent===undefined ? false : isCtxDependent; // e.g., $i ref in pred\n this.isEpsilon = true;\n return this;\n}\n\nActionTransition.prototype = Object.create(Transition.prototype);\nActionTransition.prototype.constructor = ActionTransition;\n\n\nActionTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nActionTransition.prototype.toString = function() {\n\treturn \"action_\" + this.ruleIndex + \":\" + this.actionIndex;\n};\n\n\n// A transition containing a set of values.\nfunction SetTransition(target, set) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.SET;\n if (set !==undefined && set !==null) {\n this.label = set;\n } else {\n this.label = new IntervalSet();\n this.label.addOne(Token.INVALID_TYPE);\n }\n return this;\n}\n\nSetTransition.prototype = Object.create(Transition.prototype);\nSetTransition.prototype.constructor = SetTransition;\n\nSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn this.label.contains(symbol);\n};\n\n\nSetTransition.prototype.toString = function() {\n\treturn this.label.toString();\n};\n\nfunction NotSetTransition(target, set) {\n\tSetTransition.call(this, target, set);\n\tthis.serializationType = Transition.NOT_SET;\n\treturn this;\n}\n\nNotSetTransition.prototype = Object.create(SetTransition.prototype);\nNotSetTransition.prototype.constructor = NotSetTransition;\n\nNotSetTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol &&\n\t\t\t!SetTransition.prototype.matches.call(this, symbol, minVocabSymbol, maxVocabSymbol);\n};\n\nNotSetTransition.prototype.toString = function() {\n\treturn '~' + SetTransition.prototype.toString.call(this);\n};\n\nfunction WildcardTransition(target) {\n\tTransition.call(this, target);\n\tthis.serializationType = Transition.WILDCARD;\n\treturn this;\n}\n\nWildcardTransition.prototype = Object.create(Transition.prototype);\nWildcardTransition.prototype.constructor = WildcardTransition;\n\n\nWildcardTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn symbol >= minVocabSymbol && symbol <= maxVocabSymbol;\n};\n\nWildcardTransition.prototype.toString = function() {\n\treturn \".\";\n};\n\nfunction PrecedencePredicateTransition(target, precedence) {\n\tAbstractPredicateTransition.call(this, target);\n this.serializationType = Transition.PRECEDENCE;\n this.precedence = precedence;\n this.isEpsilon = true;\n return this;\n}\n\nPrecedencePredicateTransition.prototype = Object.create(AbstractPredicateTransition.prototype);\nPrecedencePredicateTransition.prototype.constructor = PrecedencePredicateTransition;\n\nPrecedencePredicateTransition.prototype.matches = function(symbol, minVocabSymbol, maxVocabSymbol) {\n\treturn false;\n};\n\nPrecedencePredicateTransition.prototype.getPredicate = function() {\n\treturn new PrecedencePredicate(this.precedence);\n};\n\nPrecedencePredicateTransition.prototype.toString = function() {\n\treturn this.precedence + \" >= _p\";\n};\n\nexports.Transition = Transition;\nexports.AtomTransition = AtomTransition;\nexports.SetTransition = SetTransition;\nexports.NotSetTransition = NotSetTransition;\nexports.RuleTransition = RuleTransition;\nexports.ActionTransition = ActionTransition;\nexports.EpsilonTransition = EpsilonTransition;\nexports.RangeTransition = RangeTransition;\nexports.WildcardTransition = WildcardTransition;\nexports.PredicateTransition = PredicateTransition;\nexports.PrecedencePredicateTransition = PrecedencePredicateTransition;\nexports.AbstractPredicateTransition = AbstractPredicateTransition;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.ATN = require('./ATN').ATN;\nexports.ATNDeserializer = require('./ATNDeserializer').ATNDeserializer;\nexports.LexerATNSimulator = require('./LexerATNSimulator').LexerATNSimulator;\nexports.ParserATNSimulator = require('./ParserATNSimulator').ParserATNSimulator;\nexports.PredictionMode = require('./PredictionMode').PredictionMode;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Set = require(\"../Utils\").Set;\nvar DFAState = require('./DFAState').DFAState;\nvar StarLoopEntryState = require('../atn/ATNState').StarLoopEntryState;\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar DFASerializer = require('./DFASerializer').DFASerializer;\nvar LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\n\n\n\nfunction DFA(atnStartState, decision) {\n\tif (decision === undefined) {\n\t\tdecision = 0;\n\t}\n\t// From which ATN state did we create this DFA?\n\tthis.atnStartState = atnStartState;\n\tthis.decision = decision;\n\t// A set of all DFA states. Use {@link Map} so we can get old state back\n\t// ({@link Set} only allows you to see if it's there).\n\tthis._states = new Set();\n\tthis.s0 = null;\n\t// {@code true} if this DFA is for a precedence decision; otherwise,\n\t// {@code false}. This is the backing field for {@link //isPrecedenceDfa},\n\t// {@link //setPrecedenceDfa}.\n\tthis.precedenceDfa = false;\n if (atnStartState instanceof StarLoopEntryState)\n {\n if (atnStartState.isPrecedenceDecision) {\n this.precedenceDfa = true;\n var precedenceState = new DFAState(null, new ATNConfigSet());\n precedenceState.edges = [];\n precedenceState.isAcceptState = false;\n precedenceState.requiresFullContext = false;\n this.s0 = precedenceState;\n }\n }\n\treturn this;\n}\n\n// Get the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @return The start state corresponding to the specified precedence, or\n// {@code null} if no start state exists for the specified precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n\nDFA.prototype.getPrecedenceStartState = function(precedence) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\t// s0.edges is never null for a precedence DFA\n\tif (precedence < 0 || precedence >= this.s0.edges.length) {\n\t\treturn null;\n\t}\n\treturn this.s0.edges[precedence] || null;\n};\n\n// Set the start state for a specific precedence value.\n//\n// @param precedence The current precedence.\n// @param startState The start state corresponding to the specified\n// precedence.\n//\n// @throws IllegalStateException if this is not a precedence DFA.\n// @see //isPrecedenceDfa()\n//\nDFA.prototype.setPrecedenceStartState = function(precedence, startState) {\n\tif (!(this.precedenceDfa)) {\n\t\tthrow (\"Only precedence DFAs may contain a precedence start state.\");\n\t}\n\tif (precedence < 0) {\n\t\treturn;\n\t}\n\n\t// synchronization on s0 here is ok. when the DFA is turned into a\n\t// precedence DFA, s0 will be initialized once and not updated again\n\t// s0.edges is never null for a precedence DFA\n\tthis.s0.edges[precedence] = startState;\n};\n\n//\n// Sets whether this is a precedence DFA. If the specified value differs\n// from the current DFA configuration, the following actions are taken;\n// otherwise no changes are made to the current DFA.\n//\n// <ul>\n// <li>The {@link //states} map is cleared</li>\n// <li>If {@code precedenceDfa} is {@code false}, the initial state\n// {@link //s0} is set to {@code null}; otherwise, it is initialized to a new\n// {@link DFAState} with an empty outgoing {@link DFAState//edges} array to\n// store the start states for individual precedence values.</li>\n// <li>The {@link //precedenceDfa} field is updated</li>\n// </ul>\n//\n// @param precedenceDfa {@code true} if this is a precedence DFA; otherwise,\n// {@code false}\n\nDFA.prototype.setPrecedenceDfa = function(precedenceDfa) {\n\tif (this.precedenceDfa!==precedenceDfa) {\n\t\tthis._states = new DFAStatesSet();\n\t\tif (precedenceDfa) {\n\t\t\tvar precedenceState = new DFAState(null, new ATNConfigSet());\n\t\t\tprecedenceState.edges = [];\n\t\t\tprecedenceState.isAcceptState = false;\n\t\t\tprecedenceState.requiresFullContext = false;\n\t\t\tthis.s0 = precedenceState;\n\t\t} else {\n\t\t\tthis.s0 = null;\n\t\t}\n\t\tthis.precedenceDfa = precedenceDfa;\n\t}\n};\n\nObject.defineProperty(DFA.prototype, \"states\", {\n\tget : function() {\n\t\treturn this._states;\n\t}\n});\n\n// Return a list of all states in this DFA, ordered by state number.\nDFA.prototype.sortedStates = function() {\n\tvar list = this._states.values();\n\treturn list.sort(function(a, b) {\n\t\treturn a.stateNumber - b.stateNumber;\n\t});\n};\n\nDFA.prototype.toString = function(literalNames, symbolicNames) {\n\tliteralNames = literalNames || null;\n\tsymbolicNames = symbolicNames || null;\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new DFASerializer(this, literalNames, symbolicNames);\n\treturn serializer.toString();\n};\n\nDFA.prototype.toLexerString = function() {\n\tif (this.s0 === null) {\n\t\treturn \"\";\n\t}\n\tvar serializer = new LexerDFASerializer(this);\n\treturn serializer.toString();\n};\n\nexports.DFA = DFA;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// A DFA walker that knows how to dump them to serialized strings.#/\n\n\nfunction DFASerializer(dfa, literalNames, symbolicNames) {\n\tthis.dfa = dfa;\n\tthis.literalNames = literalNames || [];\n\tthis.symbolicNames = symbolicNames || [];\n\treturn this;\n}\n\nDFASerializer.prototype.toString = function() {\n if(this.dfa.s0 === null) {\n return null;\n }\n var buf = \"\";\n var states = this.dfa.sortedStates();\n for(var i=0;i<states.length;i++) {\n var s = states[i];\n if(s.edges!==null) {\n var n = s.edges.length;\n for(var j=0;j<n;j++) {\n var t = s.edges[j] || null;\n if(t!==null && t.stateNumber !== 0x7FFFFFFF) {\n buf = buf.concat(this.getStateString(s));\n buf = buf.concat(\"-\");\n buf = buf.concat(this.getEdgeLabel(j));\n buf = buf.concat(\"->\");\n buf = buf.concat(this.getStateString(t));\n buf = buf.concat('\\n');\n }\n }\n }\n }\n return buf.length===0 ? null : buf;\n};\n\nDFASerializer.prototype.getEdgeLabel = function(i) {\n if (i===0) {\n return \"EOF\";\n } else if(this.literalNames !==null || this.symbolicNames!==null) {\n return this.literalNames[i-1] || this.symbolicNames[i-1];\n } else {\n return String.fromCharCode(i-1);\n }\n};\n\nDFASerializer.prototype.getStateString = function(s) {\n var baseStateStr = ( s.isAcceptState ? \":\" : \"\") + \"s\" + s.stateNumber + ( s.requiresFullContext ? \"^\" : \"\");\n if(s.isAcceptState) {\n if (s.predicates !== null) {\n return baseStateStr + \"=>\" + s.predicates.toString();\n } else {\n return baseStateStr + \"=>\" + s.prediction.toString();\n }\n } else {\n return baseStateStr;\n }\n};\n\nfunction LexerDFASerializer(dfa) {\n\tDFASerializer.call(this, dfa, null);\n\treturn this;\n}\n\nLexerDFASerializer.prototype = Object.create(DFASerializer.prototype);\nLexerDFASerializer.prototype.constructor = LexerDFASerializer;\n\nLexerDFASerializer.prototype.getEdgeLabel = function(i) {\n\treturn \"'\" + String.fromCharCode(i) + \"'\";\n};\n\nexports.DFASerializer = DFASerializer;\nexports.LexerDFASerializer = LexerDFASerializer;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\nvar ATNConfigSet = require('./../atn/ATNConfigSet').ATNConfigSet;\nvar Utils = require('./../Utils');\nvar Hash = Utils.Hash;\nvar Set = Utils.Set;\n\n// Map a predicate to a predicted alternative.///\n\nfunction PredPrediction(pred, alt) {\n\tthis.alt = alt;\n\tthis.pred = pred;\n\treturn this;\n}\n\nPredPrediction.prototype.toString = function() {\n\treturn \"(\" + this.pred + \", \" + this.alt + \")\";\n};\n\n// A DFA state represents a set of possible ATN configurations.\n// As Aho, Sethi, Ullman p. 117 says \"The DFA uses its state\n// to keep track of all possible states the ATN can be in after\n// reading each input symbol. That is to say, after reading\n// input a1a2..an, the DFA is in a state that represents the\n// subset T of the states of the ATN that are reachable from the\n// ATN's start state along some path labeled a1a2..an.\"\n// In conventional NFA→DFA conversion, therefore, the subset T\n// would be a bitset representing the set of states the\n// ATN could be in. We need to track the alt predicted by each\n// state as well, however. More importantly, we need to maintain\n// a stack of states, tracking the closure operations as they\n// jump from rule to rule, emulating rule invocations (method calls).\n// I have to add a stack to simulate the proper lookahead sequences for\n// the underlying LL grammar from which the ATN was derived.\n//\n// <p>I use a set of ATNConfig objects not simple states. An ATNConfig\n// is both a state (ala normal conversion) and a RuleContext describing\n// the chain of rules (if any) followed to arrive at that state.</p>\n//\n// <p>A DFA state may have multiple references to a particular state,\n// but with different ATN contexts (with same or different alts)\n// meaning that state was reached via a different set of rule invocations.</p>\n// /\n\nfunction DFAState(stateNumber, configs) {\n\tif (stateNumber === null) {\n\t\tstateNumber = -1;\n\t}\n\tif (configs === null) {\n\t\tconfigs = new ATNConfigSet();\n\t}\n\tthis.stateNumber = stateNumber;\n\tthis.configs = configs;\n\t// {@code edges[symbol]} points to target of symbol. Shift up by 1 so (-1)\n\t// {@link Token//EOF} maps to {@code edges[0]}.\n\tthis.edges = null;\n\tthis.isAcceptState = false;\n\t// if accept state, what ttype do we match or alt do we predict?\n\t// This is set to {@link ATN//INVALID_ALT_NUMBER} when {@link\n\t// //predicates}{@code !=null} or\n\t// {@link //requiresFullContext}.\n\tthis.prediction = 0;\n\tthis.lexerActionExecutor = null;\n\t// Indicates that this state was created during SLL prediction that\n\t// discovered a conflict between the configurations in the state. Future\n\t// {@link ParserATNSimulator//execATN} invocations immediately jumped doing\n\t// full context prediction if this field is true.\n\tthis.requiresFullContext = false;\n\t// During SLL parsing, this is a list of predicates associated with the\n\t// ATN configurations of the DFA state. When we have predicates,\n\t// {@link //requiresFullContext} is {@code false} since full context\n\t// prediction evaluates predicates\n\t// on-the-fly. If this is not null, then {@link //prediction} is\n\t// {@link ATN//INVALID_ALT_NUMBER}.\n\t//\n\t// <p>We only use these for non-{@link //requiresFullContext} but\n\t// conflicting states. That\n\t// means we know from the context (it's $ or we don't dip into outer\n\t// context) that it's an ambiguity not a conflict.</p>\n\t//\n\t// <p>This list is computed by {@link\n\t// ParserATNSimulator//predicateDFAState}.</p>\n\tthis.predicates = null;\n\treturn this;\n}\n\n// Get the set of all alts mentioned by all ATN configurations in this\n// DFA state.\nDFAState.prototype.getAltSet = function() {\n\tvar alts = new Set();\n\tif (this.configs !== null) {\n\t\tfor (var i = 0; i < this.configs.length; i++) {\n\t\t\tvar c = this.configs[i];\n\t\t\talts.add(c.alt);\n\t\t}\n\t}\n\tif (alts.length === 0) {\n\t\treturn null;\n\t} else {\n\t\treturn alts;\n\t}\n};\n\n// Two {@link DFAState} instances are equal if their ATN configuration sets\n// are the same. This method is used to see if a state already exists.\n//\n// <p>Because the number of alternatives and number of ATN configurations are\n// finite, there is a finite number of DFA states that can be processed.\n// This is necessary to show that the algorithm terminates.</p>\n//\n// <p>Cannot test the DFA state numbers here because in\n// {@link ParserATNSimulator//addDFAState} we need to know if any other state\n// exists that has this exact set of ATN configurations. The\n// {@link //stateNumber} is irrelevant.</p>\nDFAState.prototype.equals = function(other) {\n\t// compare set of ATN configurations in this set with other\n\treturn this === other ||\n\t\t\t(other instanceof DFAState &&\n\t\t\t\tthis.configs.equals(other.configs));\n};\n\nDFAState.prototype.toString = function() {\n\tvar s = \"\" + this.stateNumber + \":\" + this.configs;\n\tif(this.isAcceptState) {\n s = s + \"=>\";\n if (this.predicates !== null)\n s = s + this.predicates;\n else\n s = s + this.prediction;\n }\n\treturn s;\n};\n\nDFAState.prototype.hashCode = function() {\n\tvar hash = new Hash();\n\thash.update(this.configs);\n return hash.finish();\n};\n\nexports.DFAState = DFAState;\nexports.PredPrediction = PredPrediction;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.DFA = require('./DFA').DFA;\nexports.DFASerializer = require('./DFASerializer').DFASerializer;\nexports.LexerDFASerializer = require('./DFASerializer').LexerDFASerializer;\nexports.PredPrediction = require('./DFAState').PredPrediction;\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\n//\n// This implementation of {@link ANTLRErrorListener} can be used to identify\n// certain potential correctness and performance problems in grammars. \"Reports\"\n// are made by calling {@link Parser//notifyErrorListeners} with the appropriate\n// message.\n//\n// <ul>\n// <li><b>Ambiguities</b>: These are cases where more than one path through the\n// grammar can match the input.</li>\n// <li><b>Weak context sensitivity</b>: These are cases where full-context\n// prediction resolved an SLL conflict to a unique alternative which equaled the\n// minimum alternative of the SLL conflict.</li>\n// <li><b>Strong (forced) context sensitivity</b>: These are cases where the\n// full-context prediction resolved an SLL conflict to a unique alternative,\n// <em>and</em> the minimum alternative of the SLL conflict was found to not be\n// a truly viable alternative. Two-stage parsing cannot be used for inputs where\n// this situation occurs.</li>\n// </ul>\n\nvar BitSet = require('./../Utils').BitSet;\nvar ErrorListener = require('./ErrorListener').ErrorListener;\nvar Interval = require('./../IntervalSet').Interval;\n\nfunction DiagnosticErrorListener(exactOnly) {\n\tErrorListener.call(this);\n\texactOnly = exactOnly || true;\n\t// whether all ambiguities or only exact ambiguities are reported.\n\tthis.exactOnly = exactOnly;\n\treturn this;\n}\n\nDiagnosticErrorListener.prototype = Object.create(ErrorListener.prototype);\nDiagnosticErrorListener.prototype.constructor = DiagnosticErrorListener;\n\nDiagnosticErrorListener.prototype.reportAmbiguity = function(recognizer, dfa,\n\t\tstartIndex, stopIndex, exact, ambigAlts, configs) {\n\tif (this.exactOnly && !exact) {\n\t\treturn;\n\t}\n\tvar msg = \"reportAmbiguity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\": ambigAlts=\" +\n\t\t\tthis.getConflictingAlts(ambigAlts, configs) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportAttemptingFullContext = function(\n\t\trecognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tvar msg = \"reportAttemptingFullContext d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.reportContextSensitivity = function(\n\t\trecognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tvar msg = \"reportContextSensitivity d=\" +\n\t\t\tthis.getDecisionDescription(recognizer, dfa) +\n\t\t\t\", input='\" +\n\t\t\trecognizer.getTokenStream().getText(new Interval(startIndex, stopIndex)) + \"'\";\n\trecognizer.notifyErrorListeners(msg);\n};\n\nDiagnosticErrorListener.prototype.getDecisionDescription = function(recognizer, dfa) {\n\tvar decision = dfa.decision;\n\tvar ruleIndex = dfa.atnStartState.ruleIndex;\n\n\tvar ruleNames = recognizer.ruleNames;\n\tif (ruleIndex < 0 || ruleIndex >= ruleNames.length) {\n\t\treturn \"\" + decision;\n\t}\n\tvar ruleName = ruleNames[ruleIndex] || null;\n\tif (ruleName === null || ruleName.length === 0) {\n\t\treturn \"\" + decision;\n\t}\n\treturn \"\" + decision + \" (\" + ruleName + \")\";\n};\n\n//\n// Computes the set of conflicting or ambiguous alternatives from a\n// configuration set, if that information was not already provided by the\n// parser.\n//\n// @param reportedAlts The set of conflicting or ambiguous alternatives, as\n// reported by the parser.\n// @param configs The conflicting or ambiguous configuration set.\n// @return Returns {@code reportedAlts} if it is not {@code null}, otherwise\n// returns the set of alternatives represented in {@code configs}.\n//\nDiagnosticErrorListener.prototype.getConflictingAlts = function(reportedAlts, configs) {\n\tif (reportedAlts !== null) {\n\t\treturn reportedAlts;\n\t}\n\tvar result = new BitSet();\n\tfor (var i = 0; i < configs.items.length; i++) {\n\t\tresult.add(configs.items[i].alt);\n\t}\n\treturn \"{\" + result.values().join(\", \") + \"}\";\n};\n\nexports.DiagnosticErrorListener = DiagnosticErrorListener;","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// Provides an empty default implementation of {@link ANTLRErrorListener}. The\n// default implementation of each method does nothing, but can be overridden as\n// necessary.\n\nfunction ErrorListener() {\n\treturn this;\n}\n\nErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n};\n\nErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n};\n\nErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n};\n\nErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n};\n\nfunction ConsoleErrorListener() {\n\tErrorListener.call(this);\n\treturn this;\n}\n\nConsoleErrorListener.prototype = Object.create(ErrorListener.prototype);\nConsoleErrorListener.prototype.constructor = ConsoleErrorListener;\n\n//\n// Provides a default instance of {@link ConsoleErrorListener}.\n//\nConsoleErrorListener.INSTANCE = new ConsoleErrorListener();\n\n//\n// {@inheritDoc}\n//\n// <p>\n// This implementation prints messages to {@link System//err} containing the\n// values of {@code line}, {@code charPositionInLine}, and {@code msg} using\n// the following format.</p>\n//\n// <pre>\n// line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>\n// </pre>\n//\nConsoleErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n console.error(\"line \" + line + \":\" + column + \" \" + msg);\n};\n\nfunction ProxyErrorListener(delegates) {\n\tErrorListener.call(this);\n if (delegates===null) {\n throw \"delegates\";\n }\n this.delegates = delegates;\n\treturn this;\n}\n\nProxyErrorListener.prototype = Object.create(ErrorListener.prototype);\nProxyErrorListener.prototype.constructor = ProxyErrorListener;\n\nProxyErrorListener.prototype.syntaxError = function(recognizer, offendingSymbol, line, column, msg, e) {\n this.delegates.map(function(d) { d.syntaxError(recognizer, offendingSymbol, line, column, msg, e); });\n};\n\nProxyErrorListener.prototype.reportAmbiguity = function(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs) {\n this.delegates.map(function(d) { d.reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportAttemptingFullContext = function(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs) {\n\tthis.delegates.map(function(d) { d.reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs); });\n};\n\nProxyErrorListener.prototype.reportContextSensitivity = function(recognizer, dfa, startIndex, stopIndex, prediction, configs) {\n\tthis.delegates.map(function(d) { d.reportContextSensitivity(recognizer, dfa, startIndex, stopIndex, prediction, configs); });\n};\n\nexports.ErrorListener = ErrorListener;\nexports.ConsoleErrorListener = ConsoleErrorListener;\nexports.ProxyErrorListener = ProxyErrorListener;\n\n","//\n/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n//\n\nvar Token = require('./../Token').Token;\nvar Errors = require('./Errors');\nvar NoViableAltException = Errors.NoViableAltException;\nvar InputMismatchException = Errors.InputMismatchException;\nvar FailedPredicateException = Errors.FailedPredicateException;\nvar ParseCancellationException = Errors.ParseCancellationException;\nvar ATNState = require('./../atn/ATNState').ATNState;\nvar Interval = require('./../IntervalSet').Interval;\nvar IntervalSet = require('./../IntervalSet').IntervalSet;\n\nfunction ErrorStrategy() {\n\n}\n\nErrorStrategy.prototype.reset = function(recognizer){\n};\n\nErrorStrategy.prototype.recoverInline = function(recognizer){\n};\n\nErrorStrategy.prototype.recover = function(recognizer, e){\n};\n\nErrorStrategy.prototype.sync = function(recognizer){\n};\n\nErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer){\n};\n\nErrorStrategy.prototype.reportError = function(recognizer){\n};\n\n\n\n// This is the default implementation of {@link ANTLRErrorStrategy} used for\n// error reporting and recovery in ANTLR parsers.\n//\nfunction DefaultErrorStrategy() {\n\tErrorStrategy.call(this);\n // Indicates whether the error strategy is currently \"recovering from an\n // error\". This is used to suppress reporting multiple error messages while\n // attempting to recover from a detected syntax error.\n //\n // @see //inErrorRecoveryMode\n //\n this.errorRecoveryMode = false;\n\n // The index into the input stream where the last error occurred.\n // This is used to prevent infinite loops where an error is found\n // but no token is consumed during recovery...another error is found,\n // ad nauseum. This is a failsafe mechanism to guarantee that at least\n // one token/tree node is consumed for two errors.\n //\n this.lastErrorIndex = -1;\n this.lastErrorStates = null;\n return this;\n}\n\nDefaultErrorStrategy.prototype = Object.create(ErrorStrategy.prototype);\nDefaultErrorStrategy.prototype.constructor = DefaultErrorStrategy;\n\n// <p>The default implementation simply calls {@link //endErrorCondition} to\n// ensure that the handler is not in error recovery mode.</p>\nDefaultErrorStrategy.prototype.reset = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// This method is called to enter error recovery mode when a recognition\n// exception is reported.\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.beginErrorCondition = function(recognizer) {\n this.errorRecoveryMode = true;\n};\n\nDefaultErrorStrategy.prototype.inErrorRecoveryMode = function(recognizer) {\n return this.errorRecoveryMode;\n};\n\n//\n// This method is called to leave error recovery mode after recovering from\n// a recognition exception.\n//\n// @param recognizer\n//\nDefaultErrorStrategy.prototype.endErrorCondition = function(recognizer) {\n this.errorRecoveryMode = false;\n this.lastErrorStates = null;\n this.lastErrorIndex = -1;\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation simply calls {@link //endErrorCondition}.</p>\n//\nDefaultErrorStrategy.prototype.reportMatch = function(recognizer) {\n this.endErrorCondition(recognizer);\n};\n\n//\n// {@inheritDoc}\n//\n// <p>The default implementation returns immediately if the handler is already\n// in error recovery mode. Otherwise, it calls {@link //beginErrorCondition}\n// and dispatches the reporting task based on the runtime type of {@code e}\n// according to the following table.</p>\n//\n// <ul>\n// <li>{@link NoViableAltException}: Dispatches the call to\n// {@link //reportNoViableAlternative}</li>\n// <li>{@link InputMismatchException}: Dispatches the call to\n// {@link //reportInputMismatch}</li>\n// <li>{@link FailedPredicateException}: Dispatches the call to\n// {@link //reportFailedPredicate}</li>\n// <li>All other types: calls {@link Parser//notifyErrorListeners} to report\n// the exception</li>\n// </ul>\n//\nDefaultErrorStrategy.prototype.reportError = function(recognizer, e) {\n // if we've already reported an error and have not matched a token\n // yet successfully, don't report any errors.\n if(this.inErrorRecoveryMode(recognizer)) {\n return; // don't report spurious errors\n }\n this.beginErrorCondition(recognizer);\n if ( e instanceof NoViableAltException ) {\n this.reportNoViableAlternative(recognizer, e);\n } else if ( e instanceof InputMismatchException ) {\n this.reportInputMismatch(recognizer, e);\n } else if ( e instanceof FailedPredicateException ) {\n this.reportFailedPredicate(recognizer, e);\n } else {\n console.log(\"unknown recognition error type: \" + e.constructor.name);\n console.log(e.stack);\n recognizer.notifyErrorListeners(e.getOffendingToken(), e.getMessage(), e);\n }\n};\n//\n// {@inheritDoc}\n//\n// <p>The default implementation resynchronizes the parser by consuming tokens\n// until we find one in the resynchronization set--loosely the set of tokens\n// that can follow the current rule.</p>\n//\nDefaultErrorStrategy.prototype.recover = function(recognizer, e) {\n if (this.lastErrorIndex===recognizer.getInputStream().index &&\n this.lastErrorStates !== null && this.lastErrorStates.indexOf(recognizer.state)>=0) {\n\t\t// uh oh, another error at same token index and previously-visited\n\t\t// state in ATN; must be a case where LT(1) is in the recovery\n\t\t// token set so nothing got consumed. Consume a single token\n\t\t// at least to prevent an infinite loop; this is a failsafe.\n\t\trecognizer.consume();\n }\n this.lastErrorIndex = recognizer._input.index;\n if (this.lastErrorStates === null) {\n this.lastErrorStates = [];\n }\n this.lastErrorStates.push(recognizer.state);\n var followSet = this.getErrorRecoverySet(recognizer);\n this.consumeUntil(recognizer, followSet);\n};\n\n// The default implementation of {@link ANTLRErrorStrategy//sync} makes sure\n// that the current lookahead symbol is consistent with what were expecting\n// at this point in the ATN. You can call this anytime but ANTLR only\n// generates code to check before subrules/loops and each iteration.\n//\n// <p>Implements Jim Idle's magic sync mechanism in closures and optional\n// subrules. E.g.,</p>\n//\n// <pre>\n// a : sync ( stuff sync )* ;\n// sync : {consume to what can follow sync} ;\n// </pre>\n//\n// At the start of a sub rule upon error, {@link //sync} performs single\n// token deletion, if possible. If it can't do that, it bails on the current\n// rule and uses the default error recovery, which consumes until the\n// resynchronization set of the current rule.\n//\n// <p>If the sub rule is optional ({@code (...)?}, {@code (...)*}, or block\n// with an empty alternative), then the expected set includes what follows\n// the subrule.</p>\n//\n// <p>During loop iteration, it consumes until it sees a token that can start a\n// sub rule or what follows loop. Yes, that is pretty aggressive. We opt to\n// stay in the loop as long as possible.</p>\n//\n// <p><strong>ORIGINS</strong></p>\n//\n// <p>Previous versions of ANTLR did a poor job of their recovery within loops.\n// A single mismatch token or missing token would force the parser to bail\n// out of the entire rules surrounding the loop. So, for rule</p>\n//\n// <pre>\n// classDef : 'class' ID '{' member* '}'\n// </pre>\n//\n// input with an extra token between members would force the parser to\n// consume until it found the next class definition rather than the next\n// member definition of the current class.\n//\n// <p>This functionality cost a little bit of effort because the parser has to\n// compare token set at the start of the loop and at each iteration. If for\n// some reason speed is suffering for you, you can turn off this\n// functionality by simply overriding this method as a blank { }.</p>\n//\nDefaultErrorStrategy.prototype.sync = function(recognizer) {\n // If already recovering, don't try to sync\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n var s = recognizer._interp.atn.states[recognizer.state];\n var la = recognizer.getTokenStream().LA(1);\n // try cheaper subset first; might get lucky. seems to shave a wee bit off\n var nextTokens = recognizer.atn.nextTokens(s);\n if (nextTokens.contains(Token.EPSILON) || nextTokens.contains(la)) {\n return;\n }\n switch (s.stateType) {\n case ATNState.BLOCK_START:\n case ATNState.STAR_BLOCK_START:\n case ATNState.PLUS_BLOCK_START:\n case ATNState.STAR_LOOP_ENTRY:\n // report error and recover if possible\n if( this.singleTokenDeletion(recognizer) !== null) {\n return;\n } else {\n throw new InputMismatchException(recognizer);\n }\n break;\n case ATNState.PLUS_LOOP_BACK:\n case ATNState.STAR_LOOP_BACK:\n this.reportUnwantedToken(recognizer);\n var expecting = new IntervalSet();\n expecting.addSet(recognizer.getExpectedTokens());\n var whatFollowsLoopIterationOrRule = expecting.addSet(this.getErrorRecoverySet(recognizer));\n this.consumeUntil(recognizer, whatFollowsLoopIterationOrRule);\n break;\n default:\n // do nothing if we can't identify the exact kind of ATN state\n }\n};\n\n// This is called by {@link //reportError} when the exception is a\n// {@link NoViableAltException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportNoViableAlternative = function(recognizer, e) {\n var tokens = recognizer.getTokenStream();\n var input;\n if(tokens !== null) {\n if (e.startToken.type===Token.EOF) {\n input = \"<EOF>\";\n } else {\n input = tokens.getText(new Interval(e.startToken.tokenIndex, e.offendingToken.tokenIndex));\n }\n } else {\n input = \"<unknown input>\";\n }\n var msg = \"no viable alternative at input \" + this.escapeWSAndQuote(input);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is an\n// {@link InputMismatchException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportInputMismatch = function(recognizer, e) {\n var msg = \"mismatched input \" + this.getTokenErrorDisplay(e.offendingToken) +\n \" expecting \" + e.getExpectedTokens().toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n//\n// This is called by {@link //reportError} when the exception is a\n// {@link FailedPredicateException}.\n//\n// @see //reportError\n//\n// @param recognizer the parser instance\n// @param e the recognition exception\n//\nDefaultErrorStrategy.prototype.reportFailedPredicate = function(recognizer, e) {\n var ruleName = recognizer.ruleNames[recognizer._ctx.ruleIndex];\n var msg = \"rule \" + ruleName + \" \" + e.message;\n recognizer.notifyErrorListeners(msg, e.offendingToken, e);\n};\n\n// This method is called to report a syntax error which requires the removal\n// of a token from the input stream. At the time this method is called, the\n// erroneous symbol is current {@code LT(1)} symbol and has not yet been\n// removed from the input stream. When this method returns,\n// {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenDeletion} identifies\n// single-token deletion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportUnwantedToken = function(recognizer) {\n if (this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var tokenName = this.getTokenErrorDisplay(t);\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"extraneous input \" + tokenName + \" expecting \" +\n expecting.toString(recognizer.literalNames, recognizer.symbolicNames);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n// This method is called to report a syntax error which requires the\n// insertion of a missing token into the input stream. At the time this\n// method is called, the missing token has not yet been inserted. When this\n// method returns, {@code recognizer} is in error recovery mode.\n//\n// <p>This method is called when {@link //singleTokenInsertion} identifies\n// single-token insertion as a viable recovery strategy for a mismatched\n// input error.</p>\n//\n// <p>The default implementation simply returns if the handler is already in\n// error recovery mode. Otherwise, it calls {@link //beginErrorCondition} to\n// enter error recovery mode, followed by calling\n// {@link Parser//notifyErrorListeners}.</p>\n//\n// @param recognizer the parser instance\n//\nDefaultErrorStrategy.prototype.reportMissingToken = function(recognizer) {\n if ( this.inErrorRecoveryMode(recognizer)) {\n return;\n }\n this.beginErrorCondition(recognizer);\n var t = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var msg = \"missing \" + expecting.toString(recognizer.literalNames, recognizer.symbolicNames) +\n \" at \" + this.getTokenErrorDisplay(t);\n recognizer.notifyErrorListeners(msg, t, null);\n};\n\n// <p>The default implementation attempts to recover from the mismatched input\n// by using single token insertion and deletion as described below. If the\n// recovery attempt fails, this method throws an\n// {@link InputMismatchException}.</p>\n//\n// <p><strong>EXTRA TOKEN</strong> (single token deletion)</p>\n//\n// <p>{@code LA(1)} is not what we are looking for. If {@code LA(2)} has the\n// right token, however, then assume {@code LA(1)} is some extra spurious\n// token and delete it. Then consume and return the next token (which was\n// the {@code LA(2)} token) as the successful result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenDeletion}.</p>\n//\n// <p><strong>MISSING TOKEN</strong> (single token insertion)</p>\n//\n// <p>If current token (at {@code LA(1)}) is consistent with what could come\n// after the expected {@code LA(1)} token, then assume the token is missing\n// and use the parser's {@link TokenFactory} to create it on the fly. The\n// \"insertion\" is performed by returning the created token as the successful\n// result of the match operation.</p>\n//\n// <p>This recovery strategy is implemented by {@link\n// //singleTokenInsertion}.</p>\n//\n// <p><strong>EXAMPLE</strong></p>\n//\n// <p>For example, Input {@code i=(3;} is clearly missing the {@code ')'}. When\n// the parser returns from the nested call to {@code expr}, it will have\n// call chain:</p>\n//\n// <pre>\n// stat → expr → atom\n// </pre>\n//\n// and it will be trying to match the {@code ')'} at this point in the\n// derivation:\n//\n// <pre>\n// => ID '=' '(' INT ')' ('+' atom)* ';'\n// ^\n// </pre>\n//\n// The attempt to match {@code ')'} will fail when it sees {@code ';'} and\n// call {@link //recoverInline}. To recover, it sees that {@code LA(1)==';'}\n// is in the set of tokens that can follow the {@code ')'} token reference\n// in rule {@code atom}. It can assume that you forgot the {@code ')'}.\n//\nDefaultErrorStrategy.prototype.recoverInline = function(recognizer) {\n // SINGLE TOKEN DELETION\n var matchedSymbol = this.singleTokenDeletion(recognizer);\n if (matchedSymbol !== null) {\n // we have deleted the extra token.\n // now, move past ttype token as if all were ok\n recognizer.consume();\n return matchedSymbol;\n }\n // SINGLE TOKEN INSERTION\n if (this.singleTokenInsertion(recognizer)) {\n return this.getMissingSymbol(recognizer);\n }\n // even that didn't work; must throw the exception\n throw new InputMismatchException(recognizer);\n};\n\n//\n// This method implements the single-token insertion inline error recovery\n// strategy. It is called by {@link //recoverInline} if the single-token\n// deletion strategy fails to recover from the mismatched input. If this\n// method returns {@code true}, {@code recognizer} will be in error recovery\n// mode.\n//\n// <p>This method determines whether or not single-token insertion is viable by\n// checking if the {@code LA(1)} input symbol could be successfully matched\n// if it were instead the {@code LA(2)} symbol. If this method returns\n// {@code true}, the caller is responsible for creating and inserting a\n// token with the correct type to produce this behavior.</p>\n//\n// @param recognizer the parser instance\n// @return {@code true} if single-token insertion is a viable recovery\n// strategy for the current mismatched input, otherwise {@code false}\n//\nDefaultErrorStrategy.prototype.singleTokenInsertion = function(recognizer) {\n var currentSymbolType = recognizer.getTokenStream().LA(1);\n // if current token is consistent with what could come after current\n // ATN state, then we know we're missing a token; error recovery\n // is free to conjure up and insert the missing token\n var atn = recognizer._interp.atn;\n var currentState = atn.states[recognizer.state];\n var next = currentState.transitions[0].target;\n var expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);\n if (expectingAtLL2.contains(currentSymbolType) ){\n this.reportMissingToken(recognizer);\n return true;\n } else {\n return false;\n }\n};\n\n// This method implements the single-token deletion inline error recovery\n// strategy. It is called by {@link //recoverInline} to attempt to recover\n// from mismatched input. If this method returns null, the parser and error\n// handler state will not have changed. If this method returns non-null,\n// {@code recognizer} will <em>not</em> be in error recovery mode since the\n// returned token was a successful match.\n//\n// <p>If the single-token deletion is successful, this method calls\n// {@link //reportUnwantedToken} to report the error, followed by\n// {@link Parser//consume} to actually \"delete\" the extraneous token. Then,\n// before returning {@link //reportMatch} is called to signal a successful\n// match.</p>\n//\n// @param recognizer the parser instance\n// @return the successfully matched {@link Token} instance if single-token\n// deletion successfully recovers from the mismatched input, otherwise\n// {@code null}\n//\nDefaultErrorStrategy.prototype.singleTokenDeletion = function(recognizer) {\n var nextTokenType = recognizer.getTokenStream().LA(2);\n var expecting = this.getExpectedTokens(recognizer);\n if (expecting.contains(nextTokenType)) {\n this.reportUnwantedToken(recognizer);\n // print(\"recoverFromMismatchedToken deleting \" \\\n // + str(recognizer.getTokenStream().LT(1)) \\\n // + \" since \" + str(recognizer.getTokenStream().LT(2)) \\\n // + \" is what we want\", file=sys.stderr)\n recognizer.consume(); // simply delete extra token\n // we want to return the token we're actually matching\n var matchedSymbol = recognizer.getCurrentToken();\n this.reportMatch(recognizer); // we know current token is correct\n return matchedSymbol;\n } else {\n return null;\n }\n};\n\n// Conjure up a missing token during error recovery.\n//\n// The recognizer attempts to recover from single missing\n// symbols. But, actions might refer to that missing symbol.\n// For example, x=ID {f($x);}. The action clearly assumes\n// that there has been an identifier matched previously and that\n// $x points at that token. If that token is missing, but\n// the next token in the stream is what we want we assume that\n// this token is missing and we keep going. Because we\n// have to return some token to replace the missing token,\n// we have to conjure one up. This method gives the user control\n// over the tokens returned for missing tokens. Mostly,\n// you will want to create something special for identifier\n// tokens. For literals such as '{' and ',', the default\n// action in the parser or tree parser works. It simply creates\n// a CommonToken of the appropriate type. The text will be the token.\n// If you change what tokens must be created by the lexer,\n// override this method to create the appropriate tokens.\n//\nDefaultErrorStrategy.prototype.getMissingSymbol = function(recognizer) {\n var currentSymbol = recognizer.getCurrentToken();\n var expecting = this.getExpectedTokens(recognizer);\n var expectedTokenType = expecting.first(); // get any element\n var tokenText;\n if (expectedTokenType===Token.EOF) {\n tokenText = \"<missing EOF>\";\n } else {\n tokenText = \"<missing \" + recognizer.literalNames[expectedTokenType] + \">\";\n }\n var current = currentSymbol;\n var lookback = recognizer.getTokenStream().LT(-1);\n if (current.type===Token.EOF && lookback !== null) {\n current = lookback;\n }\n return recognizer.getTokenFactory().create(current.source,\n expectedTokenType, tokenText, Token.DEFAULT_CHANNEL,\n -1, -1, current.line, current.column);\n};\n\nDefaultErrorStrategy.prototype.getExpectedTokens = function(recognizer) {\n return recognizer.getExpectedTokens();\n};\n\n// How should a token be displayed in an error message? The default\n// is to display just the text, but during development you might\n// want to have a lot of information spit out. Override in that case\n// to use t.toString() (which, for CommonToken, dumps everything about\n// the token). This is better than forcing you to override a method in\n// your token objects because you don't have to go modify your lexer\n// so that it creates a new Java type.\n//\nDefaultErrorStrategy.prototype.getTokenErrorDisplay = function(t) {\n if (t === null) {\n return \"<no token>\";\n }\n var s = t.text;\n if (s === null) {\n if (t.type===Token.EOF) {\n s = \"<EOF>\";\n } else {\n s = \"<\" + t.type + \">\";\n }\n }\n return this.escapeWSAndQuote(s);\n};\n\nDefaultErrorStrategy.prototype.escapeWSAndQuote = function(s) {\n s = s.replace(/\\n/g,\"\\\\n\");\n s = s.replace(/\\r/g,\"\\\\r\");\n s = s.replace(/\\t/g,\"\\\\t\");\n return \"'\" + s + \"'\";\n};\n\n// Compute the error recovery set for the current rule. During\n// rule invocation, the parser pushes the set of tokens that can\n// follow that rule reference on the stack; this amounts to\n// computing FIRST of what follows the rule reference in the\n// enclosing rule. See LinearApproximator.FIRST().\n// This local follow set only includes tokens\n// from within the rule; i.e., the FIRST computation done by\n// ANTLR stops at the end of a rule.\n//\n// EXAMPLE\n//\n// When you find a \"no viable alt exception\", the input is not\n// consistent with any of the alternatives for rule r. The best\n// thing to do is to consume tokens until you see something that\n// can legally follow a call to r//or* any rule that called r.\n// You don't want the exact set of viable next tokens because the\n// input might just be missing a token--you might consume the\n// rest of the input looking for one of the missing tokens.\n//\n// Consider grammar:\n//\n// a : '[' b ']'\n// | '(' b ')'\n// ;\n// b : c '^' INT ;\n// c : ID\n// | INT\n// ;\n//\n// At each rule invocation, the set of tokens that could follow\n// that rule is pushed on a stack. Here are the various\n// context-sensitive follow sets:\n//\n// FOLLOW(b1_in_a) = FIRST(']') = ']'\n// FOLLOW(b2_in_a) = FIRST(')') = ')'\n// FOLLOW(c_in_b) = FIRST('^') = '^'\n//\n// Upon erroneous input \"[]\", the call chain is\n//\n// a -> b -> c\n//\n// and, hence, the follow context stack is:\n//\n// depth follow set start of rule execution\n// 0 <EOF> a (from main())\n// 1 ']' b\n// 2 '^' c\n//\n// Notice that ')' is not included, because b would have to have\n// been called from a different context in rule a for ')' to be\n// included.\n//\n// For error recovery, we cannot consider FOLLOW(c)\n// (context-sensitive or otherwise). We need the combined set of\n// all context-sensitive FOLLOW sets--the set of all tokens that\n// could follow any reference in the call chain. We need to\n// resync to one of those tokens. Note that FOLLOW(c)='^' and if\n// we resync'd to that token, we'd consume until EOF. We need to\n// sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.\n// In this case, for input \"[]\", LA(1) is ']' and in the set, so we would\n// not consume anything. After printing an error, rule c would\n// return normally. Rule b would not find the required '^' though.\n// At this point, it gets a mismatched token error and throws an\n// exception (since LA(1) is not in the viable following token\n// set). The rule exception handler tries to recover, but finds\n// the same recovery set and doesn't consume anything. Rule b\n// exits normally returning to rule a. Now it finds the ']' (and\n// with the successful match exits errorRecovery mode).\n//\n// So, you can see that the parser walks up the call chain looking\n// for the token that was a member of the recovery set.\n//\n// Errors are not generated in errorRecovery mode.\n//\n// ANTLR's error recovery mechanism is based upon original ideas:\n//\n// \"Algorithms + Data Structures = Programs\" by Niklaus Wirth\n//\n// and\n//\n// \"A note on error recovery in recursive descent parsers\":\n// http://portal.acm.org/citation.cfm?id=947902.947905\n//\n// Later, Josef Grosch had some good ideas:\n//\n// \"Efficient and Comfortable Error Recovery in Recursive Descent\n// Parsers\":\n// ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip\n//\n// Like Grosch I implement context-sensitive FOLLOW sets that are combined\n// at run-time upon error to avoid overhead during parsing.\n//\nDefaultErrorStrategy.prototype.getErrorRecoverySet = function(recognizer) {\n var atn = recognizer._interp.atn;\n var ctx = recognizer._ctx;\n var recoverSet = new IntervalSet();\n while (ctx !== null && ctx.invokingState>=0) {\n // compute what follows who invoked us\n var invokingState = atn.states[ctx.invokingState];\n var rt = invokingState.transitions[0];\n var follow = atn.nextTokens(rt.followState);\n recoverSet.addSet(follow);\n ctx = ctx.parentCtx;\n }\n recoverSet.removeOne(Token.EPSILON);\n return recoverSet;\n};\n\n// Consume tokens until one matches the given token set.//\nDefaultErrorStrategy.prototype.consumeUntil = function(recognizer, set) {\n var ttype = recognizer.getTokenStream().LA(1);\n while( ttype !== Token.EOF && !set.contains(ttype)) {\n recognizer.consume();\n ttype = recognizer.getTokenStream().LA(1);\n }\n};\n\n//\n// This implementation of {@link ANTLRErrorStrategy} responds to syntax errors\n// by immediately canceling the parse operation with a\n// {@link ParseCancellationException}. The implementation ensures that the\n// {@link ParserRuleContext//exception} field is set for all parse tree nodes\n// that were not completed prior to encountering the error.\n//\n// <p>\n// This error strategy is useful in the following scenarios.</p>\n//\n// <ul>\n// <li><strong>Two-stage parsing:</strong> This error strategy allows the first\n// stage of two-stage parsing to immediately terminate if an error is\n// encountered, and immediately fall back to the second stage. In addition to\n// avoiding wasted work by attempting to recover from errors here, the empty\n// implementation of {@link BailErrorStrategy//sync} improves the performance of\n// the first stage.</li>\n// <li><strong>Silent validation:</strong> When syntax errors are not being\n// reported or logged, and the parse result is simply ignored if errors occur,\n// the {@link BailErrorStrategy} avoids wasting work on recovering from errors\n// when the result will be ignored either way.</li>\n// </ul>\n//\n// <p>\n// {@code myparser.setErrorHandler(new BailErrorStrategy());}</p>\n//\n// @see Parser//setErrorHandler(ANTLRErrorStrategy)\n//\nfunction BailErrorStrategy() {\n\tDefaultErrorStrategy.call(this);\n\treturn this;\n}\n\nBailErrorStrategy.prototype = Object.create(DefaultErrorStrategy.prototype);\nBailErrorStrategy.prototype.constructor = BailErrorStrategy;\n\n// Instead of recovering from exception {@code e}, re-throw it wrapped\n// in a {@link ParseCancellationException} so it is not caught by the\n// rule function catches. Use {@link Exception//getCause()} to get the\n// original {@link RecognitionException}.\n//\nBailErrorStrategy.prototype.recover = function(recognizer, e) {\n var context = recognizer._ctx;\n while (context !== null) {\n context.exception = e;\n context = context.parentCtx;\n }\n throw new ParseCancellationException(e);\n};\n\n// Make sure we don't attempt to recover inline; if the parser\n// successfully recovers, it won't throw an exception.\n//\nBailErrorStrategy.prototype.recoverInline = function(recognizer) {\n this.recover(recognizer, new InputMismatchException(recognizer));\n};\n\n// Make sure we don't attempt to recover from problems in subrules.//\nBailErrorStrategy.prototype.sync = function(recognizer) {\n // pass\n};\n\nexports.BailErrorStrategy = BailErrorStrategy;\nexports.DefaultErrorStrategy = DefaultErrorStrategy;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\n// The root of the ANTLR exception hierarchy. In general, ANTLR tracks just\n// 3 kinds of errors: prediction errors, failed predicate errors, and\n// mismatched input errors. In each case, the parser knows where it is\n// in the input, where it is in the ATN, the rule invocation stack,\n// and what kind of problem occurred.\n\nvar PredicateTransition = require('./../atn/Transition').PredicateTransition;\n\nfunction RecognitionException(params) {\n\tError.call(this);\n\tif (!!Error.captureStackTrace) {\n Error.captureStackTrace(this, RecognitionException);\n\t} else {\n\t\tvar stack = new Error().stack;\n\t}\n\tthis.message = params.message;\n this.recognizer = params.recognizer;\n this.input = params.input;\n this.ctx = params.ctx;\n // The current {@link Token} when an error occurred. Since not all streams\n // support accessing symbols by index, we have to track the {@link Token}\n // instance itself.\n this.offendingToken = null;\n // Get the ATN state number the parser was in at the time the error\n // occurred. For {@link NoViableAltException} and\n // {@link LexerNoViableAltException} exceptions, this is the\n // {@link DecisionState} number. For others, it is the state whose outgoing\n // edge we couldn't match.\n this.offendingState = -1;\n if (this.recognizer!==null) {\n this.offendingState = this.recognizer.state;\n }\n return this;\n}\n\nRecognitionException.prototype = Object.create(Error.prototype);\nRecognitionException.prototype.constructor = RecognitionException;\n\n// <p>If the state number is not known, this method returns -1.</p>\n\n//\n// Gets the set of input symbols which could potentially follow the\n// previously matched symbol at the time this exception was thrown.\n//\n// <p>If the set of expected tokens is not known and could not be computed,\n// this method returns {@code null}.</p>\n//\n// @return The set of token types that could potentially follow the current\n// state in the ATN, or {@code null} if the information is not available.\n// /\nRecognitionException.prototype.getExpectedTokens = function() {\n if (this.recognizer!==null) {\n return this.recognizer.atn.getExpectedTokens(this.offendingState, this.ctx);\n } else {\n return null;\n }\n};\n\nRecognitionException.prototype.toString = function() {\n return this.message;\n};\n\nfunction LexerNoViableAltException(lexer, input, startIndex, deadEndConfigs) {\n\tRecognitionException.call(this, {message:\"\", recognizer:lexer, input:input, ctx:null});\n this.startIndex = startIndex;\n this.deadEndConfigs = deadEndConfigs;\n return this;\n}\n\nLexerNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nLexerNoViableAltException.prototype.constructor = LexerNoViableAltException;\n\nLexerNoViableAltException.prototype.toString = function() {\n var symbol = \"\";\n if (this.startIndex >= 0 && this.startIndex < this.input.size) {\n symbol = this.input.getText((this.startIndex,this.startIndex));\n }\n return \"LexerNoViableAltException\" + symbol;\n};\n\n// Indicates that the parser could not decide which of two or more paths\n// to take based upon the remaining input. It tracks the starting token\n// of the offending input and also knows where the parser was\n// in the various paths when the error. Reported by reportNoViableAlternative()\n//\nfunction NoViableAltException(recognizer, input, startToken, offendingToken, deadEndConfigs, ctx) {\n\tctx = ctx || recognizer._ctx;\n\toffendingToken = offendingToken || recognizer.getCurrentToken();\n\tstartToken = startToken || recognizer.getCurrentToken();\n\tinput = input || recognizer.getInputStream();\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:input, ctx:ctx});\n // Which configurations did we try at input.index() that couldn't match\n\t// input.LT(1)?//\n this.deadEndConfigs = deadEndConfigs;\n // The token object at the start index; the input stream might\n // not be buffering tokens so get a reference to it. (At the\n // time the error occurred, of course the stream needs to keep a\n // buffer all of the tokens but later we might not have access to those.)\n this.startToken = startToken;\n this.offendingToken = offendingToken;\n}\n\nNoViableAltException.prototype = Object.create(RecognitionException.prototype);\nNoViableAltException.prototype.constructor = NoViableAltException;\n\n// This signifies any kind of mismatched input exceptions such as\n// when the current input does not match the expected token.\n//\nfunction InputMismatchException(recognizer) {\n\tRecognitionException.call(this, {message:\"\", recognizer:recognizer, input:recognizer.getInputStream(), ctx:recognizer._ctx});\n this.offendingToken = recognizer.getCurrentToken();\n}\n\nInputMismatchException.prototype = Object.create(RecognitionException.prototype);\nInputMismatchException.prototype.constructor = InputMismatchException;\n\n// A semantic predicate failed during validation. Validation of predicates\n// occurs when normally parsing the alternative just like matching a token.\n// Disambiguating predicate evaluation occurs when we test a predicate during\n// prediction.\n\nfunction FailedPredicateException(recognizer, predicate, message) {\n\tRecognitionException.call(this, {message:this.formatMessage(predicate,message || null), recognizer:recognizer,\n input:recognizer.getInputStream(), ctx:recognizer._ctx});\n var s = recognizer._interp.atn.states[recognizer.state];\n var trans = s.transitions[0];\n if (trans instanceof PredicateTransition) {\n this.ruleIndex = trans.ruleIndex;\n this.predicateIndex = trans.predIndex;\n } else {\n this.ruleIndex = 0;\n this.predicateIndex = 0;\n }\n this.predicate = predicate;\n this.offendingToken = recognizer.getCurrentToken();\n return this;\n}\n\nFailedPredicateException.prototype = Object.create(RecognitionException.prototype);\nFailedPredicateException.prototype.constructor = FailedPredicateException;\n\nFailedPredicateException.prototype.formatMessage = function(predicate, message) {\n if (message !==null) {\n return message;\n } else {\n return \"failed predicate: {\" + predicate + \"}?\";\n }\n};\n\nfunction ParseCancellationException() {\n\tError.call(this);\n\tError.captureStackTrace(this, ParseCancellationException);\n\treturn this;\n}\n\nParseCancellationException.prototype = Object.create(Error.prototype);\nParseCancellationException.prototype.constructor = ParseCancellationException;\n\nexports.RecognitionException = RecognitionException;\nexports.NoViableAltException = NoViableAltException;\nexports.LexerNoViableAltException = LexerNoViableAltException;\nexports.InputMismatchException = InputMismatchException;\nexports.FailedPredicateException = FailedPredicateException;\nexports.ParseCancellationException = ParseCancellationException;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nexports.RecognitionException = require('./Errors').RecognitionException;\nexports.NoViableAltException = require('./Errors').NoViableAltException;\nexports.LexerNoViableAltException = require('./Errors').LexerNoViableAltException;\nexports.InputMismatchException = require('./Errors').InputMismatchException;\nexports.FailedPredicateException = require('./Errors').FailedPredicateException;\nexports.DiagnosticErrorListener = require('./DiagnosticErrorListener').DiagnosticErrorListener;\nexports.BailErrorStrategy = require('./ErrorStrategy').BailErrorStrategy;\nexports.ErrorListener = require('./ErrorListener').ErrorListener;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\nexports.atn = require('./atn/index');\nexports.codepointat = require('./polyfills/codepointat');\nexports.dfa = require('./dfa/index');\nexports.fromcodepoint = require('./polyfills/fromcodepoint');\nexports.tree = require('./tree/index');\nexports.error = require('./error/index');\nexports.Token = require('./Token').Token;\nexports.CharStreams = require('./CharStreams').CharStreams;\nexports.CommonToken = require('./Token').CommonToken;\nexports.InputStream = require('./InputStream').InputStream;\nexports.FileStream = require('./FileStream').FileStream;\nexports.CommonTokenStream = require('./CommonTokenStream').CommonTokenStream;\nexports.Lexer = require('./Lexer').Lexer;\nexports.Parser = require('./Parser').Parser;\nvar pc = require('./PredictionContext');\nexports.PredictionContextCache = pc.PredictionContextCache;\nexports.ParserRuleContext = require('./ParserRuleContext').ParserRuleContext;\nexports.Interval = require('./IntervalSet').Interval;\nexports.Utils = require('./Utils');\n","/*! https://mths.be/codepointat v0.2.0 by @mathias */\nif (!String.prototype.codePointAt) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar codePointAt = function(position) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\tvar size = string.length;\n\t\t\t// `ToInteger`\n\t\t\tvar index = position ? Number(position) : 0;\n\t\t\tif (index != index) { // better `isNaN`\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices:\n\t\t\tif (index < 0 || index >= size) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Get the first code unit\n\t\t\tvar first = string.charCodeAt(index);\n\t\t\tvar second;\n\t\t\tif ( // check if it’s the start of a surrogate pair\n\t\t\t\tfirst >= 0xD800 && first <= 0xDBFF && // high surrogate\n\t\t\t\tsize > index + 1 // there is a next code unit\n\t\t\t) {\n\t\t\t\tsecond = string.charCodeAt(index + 1);\n\t\t\t\tif (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\treturn (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn first;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'codePointAt', {\n\t\t\t\t'value': codePointAt,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.codePointAt = codePointAt;\n\t\t}\n\t}());\n}\n","/*! https://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (!String.fromCodePoint) {\n\t(function() {\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar stringFromCharCode = String.fromCharCode;\n\t\tvar floor = Math.floor;\n\t\tvar fromCodePoint = function(_) {\n\t\t\tvar MAX_SIZE = 0x4000;\n\t\t\tvar codeUnits = [];\n\t\t\tvar highSurrogate;\n\t\t\tvar lowSurrogate;\n\t\t\tvar index = -1;\n\t\t\tvar length = arguments.length;\n\t\t\tif (!length) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (++index < length) {\n\t\t\t\tvar codePoint = Number(arguments[index]);\n\t\t\t\tif (\n\t\t\t\t\t!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n\t\t\t\t\tcodePoint < 0 || // not a valid Unicode code point\n\t\t\t\t\tcodePoint > 0x10FFFF || // not a valid Unicode code point\n\t\t\t\t\tfloor(codePoint) != codePoint // not an integer\n\t\t\t\t) {\n\t\t\t\t\tthrow RangeError('Invalid code point: ' + codePoint);\n\t\t\t\t}\n\t\t\t\tif (codePoint <= 0xFFFF) { // BMP code point\n\t\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t\t} else { // Astral code point; split in surrogate halves\n\t\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\thighSurrogate = (codePoint >> 10) + 0xD800;\n\t\t\t\t\tlowSurrogate = (codePoint % 0x400) + 0xDC00;\n\t\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t\t}\n\t\t\t\tif (index + 1 == length || codeUnits.length > MAX_SIZE) {\n\t\t\t\t\tresult += stringFromCharCode.apply(null, codeUnits);\n\t\t\t\t\tcodeUnits.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String, 'fromCodePoint', {\n\t\t\t\t'value': fromCodePoint,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.fromCodePoint = fromCodePoint;\n\t\t}\n\t}());\n}\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n///\n\n// The basic notion of a tree has a parent, a payload, and a list of children.\n// It is the most abstract interface for all the trees used by ANTLR.\n///\n\nvar Token = require('./../Token').Token;\nvar Interval = require('./../IntervalSet').Interval;\nvar INVALID_INTERVAL = new Interval(-1, -2);\nvar Utils = require('../Utils.js');\n\n\nfunction Tree() {\n\treturn this;\n}\n\nfunction SyntaxTree() {\n\tTree.call(this);\n\treturn this;\n}\n\nSyntaxTree.prototype = Object.create(Tree.prototype);\nSyntaxTree.prototype.constructor = SyntaxTree;\n\nfunction ParseTree() {\n\tSyntaxTree.call(this);\n\treturn this;\n}\n\nParseTree.prototype = Object.create(SyntaxTree.prototype);\nParseTree.prototype.constructor = ParseTree;\n\nfunction RuleNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nRuleNode.prototype = Object.create(ParseTree.prototype);\nRuleNode.prototype.constructor = RuleNode;\n\nfunction TerminalNode() {\n\tParseTree.call(this);\n\treturn this;\n}\n\nTerminalNode.prototype = Object.create(ParseTree.prototype);\nTerminalNode.prototype.constructor = TerminalNode;\n\nfunction ErrorNode() {\n\tTerminalNode.call(this);\n\treturn this;\n}\n\nErrorNode.prototype = Object.create(TerminalNode.prototype);\nErrorNode.prototype.constructor = ErrorNode;\n\nfunction ParseTreeVisitor() {\n\treturn this;\n}\n\nParseTreeVisitor.prototype.visit = function(ctx) {\n \tif (Array.isArray(ctx)) {\n\t\treturn ctx.map(function(child) {\n return child.accept(this);\n }, this);\n\t} else {\n\t\treturn ctx.accept(this);\n\t}\n};\n\nParseTreeVisitor.prototype.visitChildren = function(ctx) {\n\tif (ctx.children) {\n\t\treturn this.visit(ctx.children);\n\t} else {\n\t\treturn null;\n\t}\n}\n\nParseTreeVisitor.prototype.visitTerminal = function(node) {\n};\n\nParseTreeVisitor.prototype.visitErrorNode = function(node) {\n};\n\n\nfunction ParseTreeListener() {\n\treturn this;\n}\n\nParseTreeListener.prototype.visitTerminal = function(node) {\n};\n\nParseTreeListener.prototype.visitErrorNode = function(node) {\n};\n\nParseTreeListener.prototype.enterEveryRule = function(node) {\n};\n\nParseTreeListener.prototype.exitEveryRule = function(node) {\n};\n\nfunction TerminalNodeImpl(symbol) {\n\tTerminalNode.call(this);\n\tthis.parentCtx = null;\n\tthis.symbol = symbol;\n\treturn this;\n}\n\nTerminalNodeImpl.prototype = Object.create(TerminalNode.prototype);\nTerminalNodeImpl.prototype.constructor = TerminalNodeImpl;\n\nTerminalNodeImpl.prototype.getChild = function(i) {\n\treturn null;\n};\n\nTerminalNodeImpl.prototype.getSymbol = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getParent = function() {\n\treturn this.parentCtx;\n};\n\nTerminalNodeImpl.prototype.getPayload = function() {\n\treturn this.symbol;\n};\n\nTerminalNodeImpl.prototype.getSourceInterval = function() {\n\tif (this.symbol === null) {\n\t\treturn INVALID_INTERVAL;\n\t}\n\tvar tokenIndex = this.symbol.tokenIndex;\n\treturn new Interval(tokenIndex, tokenIndex);\n};\n\nTerminalNodeImpl.prototype.getChildCount = function() {\n\treturn 0;\n};\n\nTerminalNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitTerminal(this);\n};\n\nTerminalNodeImpl.prototype.getText = function() {\n\treturn this.symbol.text;\n};\n\nTerminalNodeImpl.prototype.toString = function() {\n\tif (this.symbol.type === Token.EOF) {\n\t\treturn \"<EOF>\";\n\t} else {\n\t\treturn this.symbol.text;\n\t}\n};\n\n// Represents a token that was consumed during resynchronization\n// rather than during a valid match operation. For example,\n// we will create this kind of a node during single token insertion\n// and deletion as well as during \"consume until error recovery set\"\n// upon no viable alternative exceptions.\n\nfunction ErrorNodeImpl(token) {\n\tTerminalNodeImpl.call(this, token);\n\treturn this;\n}\n\nErrorNodeImpl.prototype = Object.create(TerminalNodeImpl.prototype);\nErrorNodeImpl.prototype.constructor = ErrorNodeImpl;\n\nErrorNodeImpl.prototype.isErrorNode = function() {\n\treturn true;\n};\n\nErrorNodeImpl.prototype.accept = function(visitor) {\n\treturn visitor.visitErrorNode(this);\n};\n\nfunction ParseTreeWalker() {\n\treturn this;\n}\n\nParseTreeWalker.prototype.walk = function(listener, t) {\n\tvar errorNode = t instanceof ErrorNode ||\n\t\t\t(t.isErrorNode !== undefined && t.isErrorNode());\n\tif (errorNode) {\n\t\tlistener.visitErrorNode(t);\n\t} else if (t instanceof TerminalNode) {\n\t\tlistener.visitTerminal(t);\n\t} else {\n\t\tthis.enterRule(listener, t);\n\t\tfor (var i = 0; i < t.getChildCount(); i++) {\n\t\t\tvar child = t.getChild(i);\n\t\t\tthis.walk(listener, child);\n\t\t}\n\t\tthis.exitRule(listener, t);\n\t}\n};\n//\n// The discovery of a rule node, involves sending two events: the generic\n// {@link ParseTreeListener//enterEveryRule} and a\n// {@link RuleContext}-specific event. First we trigger the generic and then\n// the rule specific. We to them in reverse order upon finishing the node.\n//\nParseTreeWalker.prototype.enterRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tlistener.enterEveryRule(ctx);\n\tctx.enterRule(listener);\n};\n\nParseTreeWalker.prototype.exitRule = function(listener, r) {\n\tvar ctx = r.getRuleContext();\n\tctx.exitRule(listener);\n\tlistener.exitEveryRule(ctx);\n};\n\nParseTreeWalker.DEFAULT = new ParseTreeWalker();\n\nexports.RuleNode = RuleNode;\nexports.ErrorNode = ErrorNode;\nexports.TerminalNode = TerminalNode;\nexports.ErrorNodeImpl = ErrorNodeImpl;\nexports.TerminalNodeImpl = TerminalNodeImpl;\nexports.ParseTreeListener = ParseTreeListener;\nexports.ParseTreeVisitor = ParseTreeVisitor;\nexports.ParseTreeWalker = ParseTreeWalker;\nexports.INVALID_INTERVAL = INVALID_INTERVAL;\n","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Utils = require('./../Utils');\nvar Token = require('./../Token').Token;\nvar RuleNode = require('./Tree').RuleNode;\nvar ErrorNode = require('./Tree').ErrorNode;\nvar TerminalNode = require('./Tree').TerminalNode;\nvar ParserRuleContext = require('./../ParserRuleContext').ParserRuleContext;\nvar RuleContext = require('./../RuleContext').RuleContext;\nvar INVALID_ALT_NUMBER = require('./../atn/ATN').INVALID_ALT_NUMBER;\n\n\n/** A set of utility routines useful for all kinds of ANTLR trees. */\nfunction Trees() {\n}\n\n// Print out a whole tree in LISP form. {@link //getNodeText} is used on the\n// node payloads to get the text for the nodes. Detect\n// parse trees and extract data appropriately.\nTrees.toStringTree = function(tree, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n var s = Trees.getNodeText(tree, ruleNames);\n s = Utils.escapeWhitespace(s, false);\n var c = tree.getChildCount();\n if(c===0) {\n return s;\n }\n var res = \"(\" + s + ' ';\n if(c>0) {\n s = Trees.toStringTree(tree.getChild(0), ruleNames);\n res = res.concat(s);\n }\n for(var i=1;i<c;i++) {\n s = Trees.toStringTree(tree.getChild(i), ruleNames);\n res = res.concat(' ' + s);\n }\n res = res.concat(\")\");\n return res;\n};\n\nTrees.getNodeText = function(t, ruleNames, recog) {\n\truleNames = ruleNames || null;\n\trecog = recog || null;\n if(recog!==null) {\n ruleNames = recog.ruleNames;\n }\n if(ruleNames!==null) {\n if (t instanceof RuleContext) {\n var altNumber = t.getAltNumber();\n if ( altNumber!=INVALID_ALT_NUMBER ) {\n return ruleNames[t.ruleIndex]+\":\"+altNumber;\n }\n return ruleNames[t.ruleIndex];\n } else if ( t instanceof ErrorNode) {\n return t.toString();\n } else if(t instanceof TerminalNode) {\n if(t.symbol!==null) {\n return t.symbol.text;\n }\n }\n }\n // no recog for rule names\n var payload = t.getPayload();\n if (payload instanceof Token ) {\n return payload.text;\n }\n return t.getPayload().toString();\n};\n\n\n// Return ordered list of all children of this node\nTrees.getChildren = function(t) {\n\tvar list = [];\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tlist.push(t.getChild(i));\n\t}\n\treturn list;\n};\n\n// Return a list of all ancestors of this node. The first node of\n// list is the root and the last is the parent of this node.\n//\nTrees.getAncestors = function(t) {\n var ancestors = [];\n t = t.getParent();\n while(t!==null) {\n ancestors = [t].concat(ancestors);\n t = t.getParent();\n }\n return ancestors;\n};\n\nTrees.findAllTokenNodes = function(t, ttype) {\n return Trees.findAllNodes(t, ttype, true);\n};\n\nTrees.findAllRuleNodes = function(t, ruleIndex) {\n\treturn Trees.findAllNodes(t, ruleIndex, false);\n};\n\nTrees.findAllNodes = function(t, index, findTokens) {\n\tvar nodes = [];\n\tTrees._findAllNodes(t, index, findTokens, nodes);\n\treturn nodes;\n};\n\nTrees._findAllNodes = function(t, index, findTokens, nodes) {\n\t// check this node (the root) first\n\tif(findTokens && (t instanceof TerminalNode)) {\n\t\tif(t.symbol.type===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t} else if(!findTokens && (t instanceof ParserRuleContext)) {\n\t\tif(t.ruleIndex===index) {\n\t\t\tnodes.push(t);\n\t\t}\n\t}\n\t// check children\n\tfor(var i=0;i<t.getChildCount();i++) {\n\t\tTrees._findAllNodes(t.getChild(i), index, findTokens, nodes);\n\t}\n};\n\nTrees.descendants = function(t) {\n\tvar nodes = [t];\n for(var i=0;i<t.getChildCount();i++) {\n nodes = nodes.concat(Trees.descendants(t.getChild(i)));\n }\n return nodes;\n};\n\n\nexports.Trees = Trees;","/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.\n * Use of this file is governed by the BSD 3-clause license that\n * can be found in the LICENSE.txt file in the project root.\n */\n\nvar Tree = require('./Tree');\nexports.Trees = require('./Trees').Trees;\nexports.RuleNode = Tree.RuleNode;\nexports.ParseTreeListener = Tree.ParseTreeListener;\nexports.ParseTreeVisitor = Tree.ParseTreeVisitor;\nexports.ParseTreeWalker = Tree.ParseTreeWalker;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (colorNames.hasOwnProperty(name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar keyword = /(\\D+)/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\n\t\tif (!rgb) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d*[\\.]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = num.toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","function deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear = obj.delete = obj.set = function () {\n throw new Error('map is read-only');\n };\n } else if (obj instanceof Set) {\n obj.add = obj.clear = obj.delete = function () {\n throw new Error('set is read-only');\n };\n }\n\n // Freeze self\n Object.freeze(obj);\n\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n var prop = obj[name];\n\n // Freeze prop if it is an object\n if (typeof prop == 'object' && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n\n return obj;\n}\n\nvar deepFreezeEs6 = deepFreeze;\nvar _default = deepFreeze;\ndeepFreezeEs6.default = _default;\n\n/** @implements CallbackResponse */\nclass Response {\n /**\n * @param {CompiledMode} mode\n */\n constructor(mode) {\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction escapeHTML(value) {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */\nfunction inherit(original, ...objects) {\n /** @type Record<string,any> */\n const result = Object.create(null);\n\n for (const key in original) {\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for (const key in obj) {\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ (result);\n}\n\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */\n\n/** @typedef {{kind?: string, sublanguage?: boolean}} Node */\n/** @typedef {{walk: (r: Renderer) => void}} Tree */\n/** */\n\nconst SPAN_CLOSE = '</span>';\n\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */\nconst emitsWrappingTags = (node) => {\n return !!node.kind;\n};\n\n/** @type {Renderer} */\nclass HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */\n constructor(parseTree, options) {\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */\n addText(text) {\n this.buffer += escapeHTML(text);\n }\n\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */\n openNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n let className = node.kind;\n if (!node.sublanguage) {\n className = `${this.classPrefix}${className}`;\n }\n this.span(className);\n }\n\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */\n closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n\n this.buffer += SPAN_CLOSE;\n }\n\n /**\n * returns the accumulated buffer\n */\n value() {\n return this.buffer;\n }\n\n // helpers\n\n /**\n * Builds a span element\n *\n * @param {string} className */\n span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} | string} Node */\n/** @typedef {{kind?: string, sublanguage?: boolean, children: Node[]} } DataNode */\n/** */\n\nclass TokenTree {\n constructor() {\n /** @type DataNode */\n this.rootNode = { children: [] };\n this.stack = [this.rootNode];\n }\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n get root() { return this.rootNode; }\n\n /** @param {Node} node */\n add(node) {\n this.top.children.push(node);\n }\n\n /** @param {string} kind */\n openNode(kind) {\n /** @type Node */\n const node = { kind, children: [] };\n this.add(node);\n this.stack.push(node);\n }\n\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n\n closeAllNodes() {\n while (this.closeNode());\n }\n\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */\n walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */\n static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child) => this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n\n /**\n * @param {Node} node\n */\n static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n\n if (node.children.every(el => typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [node.children.join(\"\")];\n } else {\n node.children.forEach((child) => {\n TokenTree._collapse(child);\n });\n }\n }\n}\n\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addKeyword(text, kind)\n - addText(text)\n - addSublanguage(emitter, subLanguageName)\n - finalize()\n - openNode(kind)\n - closeNode()\n - closeAllNodes()\n - toHTML()\n\n*/\n\n/**\n * @implements {Emitter}\n */\nclass TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */\n constructor(options) {\n super();\n this.options = options;\n }\n\n /**\n * @param {string} text\n * @param {string} kind\n */\n addKeyword(text, kind) {\n if (text === \"\") { return; }\n\n this.openNode(kind);\n this.addText(text);\n this.closeNode();\n }\n\n /**\n * @param {string} text\n */\n addText(text) {\n if (text === \"\") { return; }\n\n this.add(text);\n }\n\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */\n addSublanguage(emitter, name) {\n /** @type DataNode */\n const node = emitter.root;\n node.kind = name;\n node.sublanguage = true;\n this.add(node);\n }\n\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n\n finalize() {\n return true;\n }\n}\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\nfunction escape(value) {\n return new RegExp(value.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] } args\n * @returns {string}\n */\nfunction either(...args) {\n const joined = '(' + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/**\n * @param {RegExp} re\n * @returns {number}\n */\nfunction countMatchGroups(re) {\n return (new RegExp(re.toString() + '|')).exec('').length - 1;\n}\n\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */\nfunction startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {string} separator\n * @returns {string}\n */\nfunction join(regexps, separator = \"|\") {\n let numCaptures = 0;\n\n return regexps.map((regex) => {\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = '';\n\n while (re.length > 0) {\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === '\\\\' && match[1]) {\n // Adjust the backreference.\n out += '\\\\' + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === '(') {\n numCaptures++;\n }\n }\n }\n return out;\n }).map(re => `(${re})`).join(separator);\n}\n\n// Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = '[a-zA-Z]\\\\w*';\nconst UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\nconst NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\nconst C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\nconst RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/\nconst SHEBANG = (opts = {}) => {\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(\n beginShebang,\n /.*\\b/,\n opts.binary,\n /\\b.*/);\n }\n return inherit({\n className: 'meta',\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */\n \"on:begin\": (m, resp) => {\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n};\nconst APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [BACKSLASH_ESCAPE]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */\nconst COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit(\n {\n className: 'comment',\n begin,\n end,\n contains: []\n },\n modeOptions\n );\n mode.contains.push(PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',\n relevance: 0\n });\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT('//', '$');\nconst C_BLOCK_COMMENT_MODE = COMMENT('/\\\\*', '\\\\*/');\nconst HASH_COMMENT_MODE = COMMENT('#', '$');\nconst NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n className: 'number',\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n className: 'number',\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst CSS_NUMBER_MODE = {\n className: 'number',\n begin: NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n};\nconst REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [{\n className: 'regexp',\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [BACKSLASH_ESCAPE]\n }\n ]\n }]\n};\nconst TITLE_MODE = {\n className: 'title',\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */\nconst END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode,\n {\n /** @type {ModeCallback} */\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1]; },\n /** @type {ModeCallback} */\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); }\n });\n};\n\nvar MODES = /*#__PURE__*/Object.freeze({\n __proto__: null,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n CSS_NUMBER_MODE: CSS_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n\n// Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n\n// ------\n\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\nfunction skipIfhasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n\n\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */\nfunction beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')(?!\\\\.)(?=\\\\b|\\\\s)';\n mode.__beforeBegin = skipIfhasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */\nfunction compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n\n mode.illegal = either(...mode.illegal);\n}\n\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */\nfunction compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n\n mode.begin = mode.match;\n delete mode.match;\n}\n\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */\nfunction compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n 'of',\n 'and',\n 'for',\n 'in',\n 'not',\n 'or',\n 'if',\n 'then',\n 'parent', // common variable name\n 'list', // common variable name\n 'value' // common variable name\n];\n\nconst DEFAULT_KEYWORD_CLASSNAME = \"keyword\";\n\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */\nfunction compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) {\n /** @type KeywordDict */\n const compiledKeywords = {};\n\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing className (which can then point to a string or array)\n if (typeof rawKeywords === 'string') {\n compileList(className, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(className, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(className) {\n // collapse all our objects back into the parent object\n Object.assign(\n compiledKeywords,\n compileKeywords(rawKeywords[className], caseInsensitive, className)\n );\n });\n }\n return compiledKeywords;\n\n // ---\n\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} className\n * @param {Array<string>} keywordList\n */\n function compileList(className, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map(x => x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split('|');\n compiledKeywords[pair[0]] = [className, scoreForKeyword(pair[0], pair[1])];\n });\n }\n}\n\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */\nfunction scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n\n return commonKeyword(keyword) ? 0 : 1;\n}\n\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */\nfunction commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n\n// compilation\n\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @param {{plugins: HLJSPlugin[]}} opts\n * @returns {CompiledLanguage}\n */\nfunction compileLanguage(language, { plugins }) {\n /**\n * Builds a regex with the case sensativility of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */\n function langRe(value, global) {\n return new RegExp(\n source(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */\n class MultiRegex {\n constructor() {\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([opts, re]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = () => null;\n }\n const terminators = this.regexes.map(el => el[1]);\n this.matcherRe = langRe(join(terminators), true);\n this.lastIndex = 0;\n }\n\n /** @param {string} s */\n exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) { return null; }\n\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i) => i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n\n return Object.assign(match, matchData);\n }\n }\n\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */\n class ResumableMultiRegex {\n constructor() {\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts]) => matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n\n considerAll() {\n this.regexIndex = 0;\n }\n\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([re, opts]);\n if (opts.type === \"begin\") this.count++;\n }\n\n /** @param {string} s */\n exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ; else { // use the second matcher result\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n\n return result;\n }\n }\n\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */\n function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n\n mode.contains.forEach(term => mm.addRule(term.begin, { rule: term, type: \"begin\" }));\n\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, { type: \"end\" });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, { type: \"illegal\" });\n }\n\n return mm;\n }\n\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */\n\n /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */\n function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ (mode);\n if (mode.isCompiled) return cmode;\n\n [\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch\n ].forEach(ext => ext(mode, parent));\n\n language.compilerExtensions.forEach(ext => ext(mode, parent));\n\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach(ext => ext(mode, parent));\n\n mode.isCompiled = true;\n\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\") {\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n\n // both are not allowed\n if (mode.lexemes && keywordPattern) {\n throw new Error(\"ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) \");\n }\n\n // `mode.lexemes` was the old standard before we added and now recommend\n // using `keywords.$pattern` to pass the keyword pattern\n keywordPattern = keywordPattern || mode.lexemes || /\\w+/;\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin) mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(mode.end);\n cmode.terminatorEnd = source(mode.end) || '';\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? '|' : '') + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ (mode.illegal));\n if (!mode.contains) mode.contains = [];\n\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === 'self' ? mode : c);\n }));\n mode.contains.forEach(function(c) { compileMode(/** @type Mode */ (c), cmode); });\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n\n if (!language.compilerExtensions) language.compilerExtensions = [];\n\n // self is not valid at the top-level\n if (language.contains && language.contains.includes('self')) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit(language.classNameAliases || {});\n\n return compileMode(/** @type Mode */ (language));\n}\n\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */\nfunction dependencyOnParent(mode) {\n if (!mode) return false;\n\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */\nfunction expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit(mode, { variants: null }, variant);\n });\n }\n\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });\n }\n\n if (Object.isFrozen(mode)) {\n return inherit(mode);\n }\n\n // no special dependency issues, just return ourselves\n return mode;\n}\n\nvar version = \"10.7.3\";\n\n// @ts-nocheck\n\nfunction hasValueOrEmptyAttribute(value) {\n return Boolean(value || value === \"\");\n}\n\nfunction BuildVuePlugin(hljs) {\n const Component = {\n props: [\"language\", \"code\", \"autodetect\"],\n data: function() {\n return {\n detectedLanguage: \"\",\n unknownLanguage: false\n };\n },\n computed: {\n className() {\n if (this.unknownLanguage) return \"\";\n\n return \"hljs \" + this.detectedLanguage;\n },\n highlighted() {\n // no idea what language to use, return raw code\n if (!this.autoDetect && !hljs.getLanguage(this.language)) {\n console.warn(`The language \"${this.language}\" you specified could not be found.`);\n this.unknownLanguage = true;\n return escapeHTML(this.code);\n }\n\n let result = {};\n if (this.autoDetect) {\n result = hljs.highlightAuto(this.code);\n this.detectedLanguage = result.language;\n } else {\n result = hljs.highlight(this.language, this.code, this.ignoreIllegals);\n this.detectedLanguage = this.language;\n }\n return result.value;\n },\n autoDetect() {\n return !this.language || hasValueOrEmptyAttribute(this.autodetect);\n },\n ignoreIllegals() {\n return true;\n }\n },\n // this avoids needing to use a whole Vue compilation pipeline just\n // to build Highlight.js\n render(createElement) {\n return createElement(\"pre\", {}, [\n createElement(\"code\", {\n class: this.className,\n domProps: { innerHTML: this.highlighted }\n })\n ]);\n }\n // template: `<pre><code :class=\"className\" v-html=\"highlighted\"></code></pre>`\n };\n\n const VuePlugin = {\n install(Vue) {\n Vue.component('highlightjs', Component);\n }\n };\n\n return { Component, VuePlugin };\n}\n\n/* plugin itself */\n\n/** @type {HLJSPlugin} */\nconst mergeHTMLPlugin = {\n \"after:highlightElement\": ({ el, result, text }) => {\n const originalStream = nodeStream(el);\n if (!originalStream.length) return;\n\n const resultNode = document.createElement('div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n }\n};\n\n/* Stream merging support functions */\n\n/**\n * @typedef Event\n * @property {'start'|'stop'} event\n * @property {number} offset\n * @property {Node} node\n */\n\n/**\n * @param {Node} node\n */\nfunction tag(node) {\n return node.nodeName.toLowerCase();\n}\n\n/**\n * @param {Node} node\n */\nfunction nodeStream(node) {\n /** @type Event[] */\n const result = [];\n (function _nodeStream(node, offset) {\n for (let child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3) {\n offset += child.nodeValue.length;\n } else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n}\n\n/**\n * @param {any} original - the original stream\n * @param {any} highlighted - stream of the highlighted source\n * @param {string} value - the original source itself\n */\nfunction mergeStreams(original, highlighted, value) {\n let processed = 0;\n let result = '';\n const nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n /**\n * @param {Node} node\n */\n function open(node) {\n /** @param {Attr} attr */\n function attributeString(attr) {\n return ' ' + attr.nodeName + '=\"' + escapeHTML(attr.value) + '\"';\n }\n // @ts-ignore\n result += '<' + tag(node) + [].map.call(node.attributes, attributeString).join('') + '>';\n }\n\n /**\n * @param {Node} node\n */\n function close(node) {\n result += '</' + tag(node) + '>';\n }\n\n /**\n * @param {Event} event\n */\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n let stream = selectStream();\n result += escapeHTML(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escapeHTML(value.substr(processed));\n}\n\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/\n\n/**\n * @type {Record<string, boolean>}\n */\nconst seenDeprecations = {};\n\n/**\n * @param {string} message\n */\nconst error = (message) => {\n console.error(message);\n};\n\n/**\n * @param {string} message\n * @param {any} args\n */\nconst warn = (message, ...args) => {\n console.log(`WARN: ${message}`, ...args);\n};\n\n/**\n * @param {string} version\n * @param {string} message\n */\nconst deprecated = (version, message) => {\n if (seenDeprecations[`${version}/${message}`]) return;\n\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\nconst escape$1 = escapeHTML;\nconst inherit$1 = inherit;\nconst NO_MATCH = Symbol(\"nomatch\");\n\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */\nconst HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */\n const languages = Object.create(null);\n /** @type {Record<string, string>} */\n const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */\n const plugins = [];\n\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const fixMarkupRe = /(^(<[^>]+>|\\t|)+|\\n)/gm;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */\n const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: 'Plain text', contains: [] };\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */\n let options = {\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n\n /* Utility functions */\n\n /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */\n function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */\n function blockLanguage(block) {\n let classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : 'no-highlight';\n }\n\n return classes\n .split(/\\s+/)\n .find((_class) => shouldNotHighlight(_class) || getLanguage(_class));\n }\n\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrlanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode} [continuation] - current continuation mode, if any\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */\n function highlight(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrlanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n // continuation not supported at all via the new API\n // eslint-disable-next-line no-undefined\n continuation = undefined;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrlanguageName;\n code = optionsOrCode;\n }\n\n /** @type {BeforeHighlightContext} */\n const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result\n ? context.result\n : _highlight(context.language, context.code, ignoreIllegals, continuation);\n\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n\n return result;\n }\n\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */\n function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {RegExpMatchArray} match - regexp match data\n * @returns {KeywordData | false}\n */\n function keywordData(mode, match) {\n const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];\n }\n\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n\n while (match) {\n buf += modeBuffer.substring(lastIndex, match.index);\n const data = keywordData(top, match);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n\n relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitter.addKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substr(lastIndex);\n emitter.addText(buf);\n }\n\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */\n let result = null;\n\n if (typeof top.subLanguage === 'string') {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ (result.top);\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.addSublanguage(result.emitter, result.language);\n }\n\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = '';\n }\n\n /**\n * @param {Mode} mode - new mode to start\n */\n function startNewMode(mode) {\n if (mode.className) {\n emitter.openNode(language.classNameAliases[mode.className] || mode.className);\n }\n top = Object.create(mode, { parent: { value: top } });\n return top;\n }\n\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */\n function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n\n if (matched) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */\n function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexs to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */\n function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [newMode.__beforeBegin, newMode[\"on:begin\"]];\n for (const cb of beforeCallbacks) {\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n\n if (newMode && newMode.endSameAsBegin) {\n newMode.endRe = escape(lexeme);\n }\n\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode);\n // if (mode[\"after:begin\"]) {\n // let resp = new Response(mode);\n // mode[\"after:begin\"](match, resp);\n // }\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */\n function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substr(match.index);\n\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) { return NO_MATCH; }\n\n const origin = top;\n if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.className) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== endMode.parent);\n if (endMode.starts) {\n if (endMode.endSameAsBegin) {\n endMode.starts.endRe = endMode.endRe;\n }\n startNewMode(endMode.starts);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n function processContinuations() {\n const list = [];\n for (let current = top; current !== language; current = current.parent) {\n if (current.className) {\n list.unshift(current.className);\n }\n }\n list.forEach(item => emitter.openNode(item));\n }\n\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */\n let lastMatch = {};\n\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceeding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */\n function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */\n const err = new Error('0 width match regex');\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */\n const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error('potential infinite loop, way more iterations than matches');\n throw err;\n }\n\n /*\n Why might be find ourselves here? Only one occasion now. An end match that was\n triggered but could not be completed. When might this happen? When an `endSameasBegin`\n rule sets the end rule to a specific match. Since the overall mode termination rule that's\n being used to scan the text isn't recompiled that means that any match that LOOKS like\n the end (but is not, because it is not an exact match to the beginning) will\n end up here. A definite end match, but when `doEndMatch` tries to \"reapply\"\n the end rule and fails to match, we wind up here, and just silently ignore the end.\n\n This causes no real harm other than stopping a few times too many.\n */\n\n modeBuffer += lexeme;\n return lexeme.length;\n }\n\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n\n const md = compileLanguage(language, { plugins });\n let result = '';\n /** @type {CompiledMode} */\n let top = continuation || md;\n /** @type Record<string,CompiledMode> */\n const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = '';\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n\n try {\n top.matcher.considerAll();\n\n for (;;) {\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n\n if (!match) break;\n\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substr(index));\n emitter.closeAllNodes();\n emitter.finalize();\n result = emitter.toHTML();\n\n return {\n // avoid possible breakage with v10 clients expecting\n // this to always be an integer\n relevance: Math.floor(relevance),\n value: result,\n language: languageName,\n illegal: false,\n emitter: emitter,\n top: top\n };\n } catch (err) {\n if (err.message && err.message.includes('Illegal')) {\n return {\n illegal: true,\n illegalBy: {\n msg: err.message,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode\n },\n sofar: result,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n illegal: false,\n relevance: 0,\n value: escape$1(codeToHighlight),\n emitter: emitter,\n language: languageName,\n top: top,\n errorRaised: err\n };\n } else {\n throw err;\n }\n }\n }\n\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */\n function justTextHighlightResult(code) {\n const result = {\n relevance: 0,\n emitter: new options.__emitter(options),\n value: escape$1(code),\n illegal: false,\n top: PLAINTEXT_LANGUAGE\n };\n result.emitter.addText(code);\n return result;\n }\n\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */\n function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map(name =>\n _highlight(name, code, false)\n );\n results.unshift(plaintext); // plaintext is always an option\n\n const sorted = results.sort((a, b) => {\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n\n const [best, secondBest] = sorted;\n\n /** @type {AutoHighlightResult} */\n const result = best;\n result.second_best = secondBest;\n\n return result;\n }\n\n /**\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '<br>' for non-pre containers\n\n @param {string} html\n @returns {string}\n */\n function fixMarkup(html) {\n if (!(options.tabReplace || options.useBR)) {\n return html;\n }\n\n return html.replace(fixMarkupRe, match => {\n if (match === '\\n') {\n return options.useBR ? '<br>' : match;\n } else if (options.tabReplace) {\n return match.replace(/\\t/g, options.tabReplace);\n }\n return match;\n });\n }\n\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */\n function updateClassName(element, currentLang, resultLang) {\n const language = currentLang ? aliases[currentLang] : resultLang;\n\n element.classList.add(\"hljs\");\n if (language) element.classList.add(language);\n }\n\n /** @type {HLJSPlugin} */\n const brPlugin = {\n \"before:highlightElement\": ({ el }) => {\n if (options.useBR) {\n el.innerHTML = el.innerHTML.replace(/\\n/g, '').replace(/<br[ /]*>/g, '\\n');\n }\n },\n \"after:highlightElement\": ({ result }) => {\n if (options.useBR) {\n result.value = result.value.replace(/\\n/g, \"<br>\");\n }\n }\n };\n\n const TAB_REPLACE_RE = /^(<[^>]+>|\\t)+/gm;\n /** @type {HLJSPlugin} */\n const tabReplacePlugin = {\n \"after:highlightElement\": ({ result }) => {\n if (options.tabReplace) {\n result.value = result.value.replace(TAB_REPLACE_RE, (m) =>\n m.replace(/\\t/g, options.tabReplace)\n );\n }\n }\n };\n\n /**\n * Applies highlighting to a DOM node containing code. Accepts a DOM node and\n * two optional parameters for fixMarkup.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */\n function highlightElement(element) {\n /** @type HTMLElement */\n let node = null;\n const language = blockLanguage(element);\n\n if (shouldNotHighlight(language)) return;\n\n // support for v10 API\n fire(\"before:highlightElement\",\n { el: element, language: language });\n\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, { language, ignoreIllegals: true }) : highlightAuto(text);\n\n // support for v10 API\n fire(\"after:highlightElement\", { el: element, result, text });\n\n element.innerHTML = result.value;\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relavance: result.relevance\n };\n if (result.second_best) {\n element.second_best = {\n language: result.second_best.language,\n // TODO: remove with version 11.0\n re: result.second_best.relevance,\n relavance: result.second_best.relevance\n };\n }\n }\n\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */\n function configure(userOptions) {\n if (userOptions.useBR) {\n deprecated(\"10.3.0\", \"'useBR' will be removed entirely in v11.0\");\n deprecated(\"10.3.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2559\");\n }\n options = inherit$1(options, userOptions);\n }\n\n /**\n * Highlights to all <pre><code> blocks on a page\n *\n * @type {Function & {called?: boolean}}\n */\n // TODO: remove v12, deprecated\n const initHighlighting = () => {\n if (initHighlighting.called) return;\n initHighlighting.called = true;\n\n deprecated(\"10.6.0\", \"initHighlighting() is deprecated. Use highlightAll() instead.\");\n\n const blocks = document.querySelectorAll('pre code');\n blocks.forEach(highlightElement);\n };\n\n // Higlights all when DOMContentLoaded fires\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() is deprecated. Use highlightAll() instead.\");\n wantsHighlight = true;\n }\n\n let wantsHighlight = false;\n\n /**\n * auto-highlights all pre>code elements on the page\n */\n function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n\n const blocks = document.querySelectorAll('pre code');\n blocks.forEach(highlightElement);\n }\n\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n\n // make sure we are in the browser environment\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('DOMContentLoaded', boot, false);\n }\n\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */\n function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) { throw error$1; } else { error(error$1); }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n\n if (lang.aliases) {\n registerAliases(lang.aliases, { languageName });\n }\n }\n\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */\n function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)) {\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n\n /**\n * @returns {string[]} List of language internal names\n */\n function listLanguages() {\n return Object.keys(languages);\n }\n\n /**\n intended usage: When one language truly requires another\n\n Unlike `getLanguage`, this will throw when the requested language\n is not available.\n\n @param {string} name - name of the language to fetch/require\n @returns {Language | never}\n */\n function requireLanguage(name) {\n deprecated(\"10.4.0\", \"requireLanguage will be removed entirely in v11.\");\n deprecated(\"10.4.0\", \"Please see https://github.com/highlightjs/highlight.js/pull/2844\");\n\n const lang = getLanguage(name);\n if (lang) { return lang; }\n\n const err = new Error('The \\'{}\\' language is required, but not loaded.'.replace('{}', name));\n throw err;\n }\n\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */\n function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === 'string') {\n aliasList = [aliasList];\n }\n aliasList.forEach(alias => { aliases[alias.toLowerCase()] = languageName; });\n }\n\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */\n function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */\n function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data) => {\n plugin[\"before:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data) => {\n plugin[\"after:highlightBlock\"](\n Object.assign({ block: data.el }, data)\n );\n };\n }\n }\n\n /**\n * @param {HLJSPlugin} plugin\n */\n function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */\n function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n\n /**\n Note: fixMarkup is deprecated and will be removed entirely in v11\n\n @param {string} arg\n @returns {string}\n */\n function deprecateFixMarkup(arg) {\n deprecated(\"10.2.0\", \"fixMarkup will be removed entirely in v11.0\");\n deprecated(\"10.2.0\", \"Please see https://github.com/highlightjs/highlight.js/issues/2534\");\n\n return fixMarkup(arg);\n }\n\n /**\n *\n * @param {HighlightedHTMLElement} el\n */\n function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n\n return highlightElement(el);\n }\n\n /* Interface definition */\n Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n fixMarkup: deprecateFixMarkup,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n requireLanguage,\n autoDetection,\n inherit: inherit$1,\n addPlugin,\n // plugins for frameworks\n vuePlugin: BuildVuePlugin(hljs).VuePlugin\n });\n\n hljs.debugMode = function() { SAFE_MODE = false; };\n hljs.safeMode = function() { SAFE_MODE = true; };\n hljs.versionString = version;\n\n for (const key in MODES) {\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreezeEs6(MODES[key]);\n }\n }\n\n // merge all the modes/regexs into our main object\n Object.assign(hljs, MODES);\n\n // built-in plugins, likely to be moved out of core in the future\n hljs.addPlugin(brPlugin); // slated to be removed in v11\n hljs.addPlugin(mergeHTMLPlugin);\n hljs.addPlugin(tabReplacePlugin);\n return hljs;\n};\n\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\n\nmodule.exports = highlight;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common\n*/\n\n/** @type LanguageFn */\nfunction bash(hljs) {\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end:/\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [ VAR ]\n } // default values\n ]\n };\n Object.assign(VAR,{\n className: 'variable',\n variants: [\n {begin: concat(/\\$[\\w\\d#@][\\w\\d_]*/,\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`) },\n BRACED_VAR\n ]\n });\n\n const SUBST = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: {\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: 'string'\n })\n ]\n }\n };\n const QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n className: '',\n begin: /\\\\\"/\n\n };\n const APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n const ARITHMETIC = {\n begin: /\\$\\(\\(/,\n end: /\\)\\)/,\n contains: [\n { begin: /\\d+#[0-9a-f]+/, className: \"number\" },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\",\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n relevance: 0\n };\n\n return {\n name: 'Bash',\n aliases: ['sh', 'zsh'],\n keywords: {\n $pattern: /\\b[a-z._-]+\\b/,\n keyword:\n 'if then else elif fi for while in do done case esac function',\n literal:\n 'true false',\n built_in:\n // Shell built-ins\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n 'trap umask unset ' +\n // Bash built-ins\n 'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n 'read readarray source type typeset ulimit unalias ' +\n // Shell modifiers\n 'set shopt ' +\n // Zsh built-ins\n 'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n 'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n 'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n 'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n 'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n 'zpty zregexparse zsocket zstyle ztcp'\n },\n contains: [\n KNOWN_SHEBANG, // to catch known shells and boost relevancy\n hljs.SHEBANG(), // to catch unknown shells but still highlight the shebang\n FUNCTION,\n ARITHMETIC,\n hljs.HASH_COMMENT_MODE,\n HERE_DOC,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n VAR\n ]\n };\n}\n\nmodule.exports = bash;\n","const IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\nconst KEYWORDS = [\n \"as\", // for exports\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n\nconst TYPES = [\n \"Intl\",\n \"DataView\",\n \"Number\",\n \"Math\",\n \"Date\",\n \"String\",\n \"RegExp\",\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Error\",\n \"Symbol\",\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n \"Proxy\",\n \"Reflect\",\n \"JSON\",\n \"Promise\",\n \"Float64Array\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Float32Array\",\n \"Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"ArrayBuffer\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"BigInt\"\n];\n\nconst ERROR_TYPES = [\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\n\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n\n \"require\",\n \"exports\",\n\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\n\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\n\nconst BUILT_INS = [].concat(\n BUILT_IN_GLOBALS,\n BUILT_IN_VARIABLES,\n TYPES,\n ERROR_TYPES\n);\n\n/**\n * @param {string} value\n * @returns {RegExp}\n * */\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/\n\n/** @type LanguageFn */\nfunction javascript(hljs) {\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */\n const hasClosingTag = (match, { after }) => {\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: '<>',\n end: '</>'\n };\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */\n isTrulyOpeningTag: (match, response) => {\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n // nested type?\n // HTML should not include another raw `<` inside a tag\n // But a type might: `<Array<Array<number>>`, etc.\n if (nextChar === \"<\") {\n response.ignoreMatch();\n return;\n }\n // <something>\n // This is now either a tag or a type.\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, { after: afterMatchIndex })) {\n response.ignoreMatch();\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = '[0-9](_?[0-9])*';\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: 'number',\n variants: [\n // DecimalLiteral\n { begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` +\n `[eE][+-]?(${decimalDigits})\\\\b` },\n { begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b` },\n\n // DecimalBigIntegerLiteral\n { begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b` },\n\n // NonDecimalIntegerLiteral\n { begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\" },\n { begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\" },\n { begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\" },\n\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n { begin: \"\\\\b0[0-7]+n?\\\\b\" },\n ],\n relevance: 0\n };\n\n const SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{',\n end: '\\\\}',\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: 'html`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'xml'\n }\n };\n const CSS_TEMPLATE = {\n begin: 'css`',\n end: '',\n starts: {\n end: '`',\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: 'css'\n }\n };\n const TEMPLATE_STRING = {\n className: 'string',\n begin: '`',\n end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n '\\\\*/',\n {\n relevance: 0,\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+',\n contains: [\n {\n className: 'type',\n begin: '\\\\{',\n end: '\\\\}',\n relevance: 0\n },\n {\n className: 'variable',\n begin: IDENT_RE$1 + '(?=\\\\s*(-)|$)',\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n }\n );\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n SUBST.contains = SUBST_INTERNALS\n .concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\"self\"].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n\n return {\n name: 'Javascript',\n aliases: ['js', 'jsx', 'mjs', 'cjs'],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: { PARAMS_CONTAINS },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n {\n label: \"use_strict\",\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n NUMBER,\n { // object attr container\n begin: concat(/[{,\\n]\\s*/,\n // we need to look ahead to make sure that we actually have an\n // attribute coming up so we don't steal a comma from a potential\n // \"value\" container\n //\n // NOTE: this might not work how you think. We don't actually always\n // enter this mode and stay. Instead it might merely match `,\n // <comments up next>` and then immediately end after the , because it\n // fails to find any actual attrs. But this still does the job because\n // it prevents the value contain rule from grabbing this instead and\n // prevening this rule from firing when we actually DO have keys.\n lookahead(concat(\n // we also need to allow for multiple possible comments inbetween\n // the first key:value pairing\n /(((\\/\\/.*$)|(\\/\\*(\\*[^/]|[^*])*\\*\\/))\\s*)*/,\n IDENT_RE$1 + '\\\\s*:'))),\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: IDENT_RE$1 + lookahead('\\\\s*:'),\n relevance: 0\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: '(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)|' + hljs.UNDERSCORE_IDENT_RE + ')\\\\s*=>',\n returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // could be a comma delimited list of params to a function call\n begin: /,/, relevance: 0\n },\n {\n className: '',\n begin: /\\s/,\n end: /\\s*/,\n skip: true\n },\n { // JSX\n variants: [\n { begin: FRAGMENT.begin, end: FRAGMENT.end },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n 'on:begin': XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: 'xml',\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: ['self']\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function',\n end: /[{;]/,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n PARAMS\n ],\n illegal: /%/\n },\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n className: 'function',\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: hljs.UNDERSCORE_IDENT_RE +\n '\\\\(' + // first parens\n '[^()]*(\\\\(' +\n '[^()]*(\\\\(' +\n '[^()]*' +\n '\\\\)[^()]*)*' +\n '\\\\)[^()]*)*' +\n '\\\\)\\\\s*\\\\{', // end parens\n returnBegin:true,\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n ]\n },\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n variants: [\n { begin: '\\\\.' + IDENT_RE$1 },\n { begin: '\\\\$' + IDENT_RE$1 }\n ],\n relevance: 0\n },\n { // ES6 class\n className: 'class',\n beginKeywords: 'class',\n end: /[{;=]/,\n excludeEnd: true,\n illegal: /[:\"[\\]]/,\n contains: [\n { beginKeywords: 'extends' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: /\\b(?=constructor)/,\n end: /[{;]/,\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n 'self',\n PARAMS\n ]\n },\n {\n begin: '(get|set)\\\\s+(?=' + IDENT_RE$1 + '\\\\()',\n end: /\\{/,\n keywords: \"get set\",\n contains: [\n hljs.inherit(hljs.TITLE_MODE, { begin: IDENT_RE$1 }),\n { begin: /\\(\\)/ }, // eat to avoid empty params\n PARAMS\n ]\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\nmodule.exports = javascript;\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nmodule.exports = plaintext;\n","/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/\nfunction yaml(hljs) {\n var LITERALS = 'true false yes no null';\n\n // YAML spec allows non-reserved URI characters in tags.\n var URI_CHARACTERS = '[\\\\w#;/?:@&=+$,.~*\\'()[\\\\]]+';\n\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n var KEY = {\n className: 'attr',\n variants: [\n { begin: '\\\\w[\\\\w :\\\\/.-]*:(?=[ \\t]|$)' },\n { begin: '\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \\t]|$)' }, // double quoted keys\n { begin: '\\'\\\\w[\\\\w :\\\\/.-]*\\':(?=[ \\t]|$)' } // single quoted keys\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: /\\{\\{/, end: /\\}\\}/ }, // jinja templates Ansible\n { begin: /%\\{/, end: /\\}/ } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /\"/, end: /\"/ },\n { begin: /\\S+/ }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n var CONTAINER_STRING = hljs.inherit(STRING, {\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /\"/, end: /\"/ },\n { begin: /[^\\s,{}[\\]]+/ }\n ]\n });\n\n var DATE_RE = '[0-9]{4}(-[0-9][0-9]){0,2}';\n var TIME_RE = '([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?';\n var FRACTION_RE = '(\\\\.[0-9]*)?';\n var ZONE_RE = '([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?';\n var TIMESTAMP = {\n className: 'number',\n begin: '\\\\b' + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + '\\\\b'\n };\n\n var VALUE_CONTAINER = {\n end: ',',\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n var OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [VALUE_CONTAINER],\n illegal: '\\\\n',\n relevance: 0\n };\n var ARRAY = {\n begin: '\\\\[',\n end: '\\\\]',\n contains: [VALUE_CONTAINER],\n illegal: '\\\\n',\n relevance: 0\n };\n\n var MODES = [\n KEY,\n {\n className: 'meta',\n begin: '^---\\\\s*$',\n relevance: 10\n },\n { // multi line string\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: 'string',\n begin: '[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*'\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?',\n end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // named tags\n className: 'type',\n begin: '!\\\\w+!' + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n { // verbatim tags\n className: 'type',\n begin: '!<' + URI_CHARACTERS + \">\"\n },\n { // primary tags\n className: 'type',\n begin: '!' + URI_CHARACTERS\n },\n { // secondary tags\n className: 'type',\n begin: '!!' + URI_CHARACTERS\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: '-(?=[ ]|$)',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: { literal: LITERALS }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE + '\\\\b',\n relevance: 0\n },\n OBJECT,\n ARRAY,\n STRING\n ];\n\n var VALUE_MODES = [...MODES];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n\n return {\n name: 'YAML',\n case_insensitive: true,\n aliases: [ 'yml' ],\n contains: MODES\n };\n}\n\nmodule.exports = yaml;\n","const WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\nconst mimes = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n};\nfunction getExtension(url) {\n const match = /\\.([^./]*?)$/g.exec(url);\n return match ? match[1] : '';\n}\nexport function getMimeType(url) {\n const extension = getExtension(url).toLowerCase();\n return mimes[extension] || '';\n}\n//# sourceMappingURL=mimes.js.map","function getContentFromDataUrl(dataURL) {\n return dataURL.split(/,/)[1];\n}\nexport function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n}\nexport function makeDataUrl(content, mimeType) {\n return `data:${mimeType};base64,${content}`;\n}\nexport async function fetchAsDataURL(url, init, process) {\n const res = await fetch(url, init);\n if (res.status === 404) {\n throw new Error(`Resource \"${res.url}\" not found`);\n }\n const blob = await res.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = () => {\n try {\n resolve(process({ res, result: reader.result }));\n }\n catch (error) {\n reject(error);\n }\n };\n reader.readAsDataURL(blob);\n });\n}\nconst cache = {};\nfunction getCacheKey(url, contentType, includeQueryParams) {\n let key = url.replace(/\\?.*/, '');\n if (includeQueryParams) {\n key = url;\n }\n // font resource\n if (/ttf|otf|eot|woff2?/i.test(key)) {\n key = key.replace(/.*\\//, '');\n }\n return contentType ? `[${contentType}]${key}` : key;\n}\nexport async function resourceToDataURL(resourceUrl, contentType, options) {\n const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);\n if (cache[cacheKey] != null) {\n return cache[cacheKey];\n }\n // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n if (options.cacheBust) {\n // eslint-disable-next-line no-param-reassign\n resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();\n }\n let dataURL;\n try {\n const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {\n if (!contentType) {\n // eslint-disable-next-line no-param-reassign\n contentType = res.headers.get('Content-Type') || '';\n }\n return getContentFromDataUrl(result);\n });\n dataURL = makeDataUrl(content, contentType);\n }\n catch (error) {\n dataURL = options.imagePlaceholder || '';\n let msg = `Failed to fetch resource: ${resourceUrl}`;\n if (error) {\n msg = typeof error === 'string' ? error : error.message;\n }\n if (msg) {\n console.warn(msg);\n }\n }\n cache[cacheKey] = dataURL;\n return dataURL;\n}\n//# sourceMappingURL=dataurl.js.map","export function resolveUrl(url, baseUrl) {\n // url is absolute already\n if (url.match(/^[a-z]+:\\/\\//i)) {\n return url;\n }\n // url is absolute already, without protocol\n if (url.match(/^\\/\\//)) {\n return window.location.protocol + url;\n }\n // dataURI, mailto:, tel:, etc.\n if (url.match(/^[a-z]+:/i)) {\n return url;\n }\n const doc = document.implementation.createHTMLDocument();\n const base = doc.createElement('base');\n const a = doc.createElement('a');\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl) {\n base.href = baseUrl;\n }\n a.href = url;\n return a.href;\n}\nexport const uuid = (() => {\n // generate uuid for className of pseudo elements.\n // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n let counter = 0;\n // ref: http://stackoverflow.com/a/6248722/2519373\n const random = () => \n // eslint-disable-next-line no-bitwise\n `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4);\n return () => {\n counter += 1;\n return `u${random()}${counter}`;\n };\n})();\nexport function delay(ms) {\n return (args) => new Promise((resolve) => {\n setTimeout(() => resolve(args), ms);\n });\n}\nexport function toArray(arrayLike) {\n const arr = [];\n for (let i = 0, l = arrayLike.length; i < l; i++) {\n arr.push(arrayLike[i]);\n }\n return arr;\n}\nfunction px(node, styleProperty) {\n const win = node.ownerDocument.defaultView || window;\n const val = win.getComputedStyle(node).getPropertyValue(styleProperty);\n return val ? parseFloat(val.replace('px', '')) : 0;\n}\nfunction getNodeWidth(node) {\n const leftBorder = px(node, 'border-left-width');\n const rightBorder = px(node, 'border-right-width');\n return node.clientWidth + leftBorder + rightBorder;\n}\nfunction getNodeHeight(node) {\n const topBorder = px(node, 'border-top-width');\n const bottomBorder = px(node, 'border-bottom-width');\n return node.clientHeight + topBorder + bottomBorder;\n}\nexport function getImageSize(targetNode, options = {}) {\n const width = options.width || getNodeWidth(targetNode);\n const height = options.height || getNodeHeight(targetNode);\n return { width, height };\n}\nexport function getPixelRatio() {\n let ratio;\n let FINAL_PROCESS;\n try {\n FINAL_PROCESS = process;\n }\n catch (e) {\n // pass\n }\n const val = FINAL_PROCESS && FINAL_PROCESS.env\n ? FINAL_PROCESS.env.devicePixelRatio\n : null;\n if (val) {\n ratio = parseInt(val, 10);\n if (Number.isNaN(ratio)) {\n ratio = 1;\n }\n }\n return ratio || window.devicePixelRatio || 1;\n}\n// @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size\nconst canvasDimensionLimit = 16384;\nexport function checkCanvasDimensions(canvas) {\n if (canvas.width > canvasDimensionLimit ||\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvasDimensionLimit &&\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvas.height) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n else if (canvas.width > canvasDimensionLimit) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n}\nexport function canvasToBlob(canvas, options = {}) {\n if (canvas.toBlob) {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, options.type ? options.type : 'image/png', options.quality ? options.quality : 1);\n });\n }\n return new Promise((resolve) => {\n const binaryString = window.atob(canvas\n .toDataURL(options.type ? options.type : undefined, options.quality ? options.quality : undefined)\n .split(',')[1]);\n const len = binaryString.length;\n const binaryArray = new Uint8Array(len);\n for (let i = 0; i < len; i += 1) {\n binaryArray[i] = binaryString.charCodeAt(i);\n }\n resolve(new Blob([binaryArray], {\n type: options.type ? options.type : 'image/png',\n }));\n });\n}\nexport function createImage(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.crossOrigin = 'anonymous';\n img.decoding = 'sync';\n img.src = url;\n });\n}\nexport async function svgToDataURL(svg) {\n return Promise.resolve()\n .then(() => new XMLSerializer().serializeToString(svg))\n .then(encodeURIComponent)\n .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);\n}\nexport async function nodeToDataURL(node, width, height) {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttribute('width', `${width}`);\n svg.setAttribute('height', `${height}`);\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n foreignObject.setAttribute('width', '100%');\n foreignObject.setAttribute('height', '100%');\n foreignObject.setAttribute('x', '0');\n foreignObject.setAttribute('y', '0');\n foreignObject.setAttribute('externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svgToDataURL(svg);\n}\n//# sourceMappingURL=util.js.map","import { uuid, toArray } from './util';\nfunction formatCSSText(style) {\n const content = style.getPropertyValue('content');\n return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`;\n}\nfunction formatCSSProperties(style) {\n return toArray(style)\n .map((name) => {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n return `${name}: ${value}${priority ? ' !important' : ''};`;\n })\n .join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style) {\n const selector = `.${className}:${pseudo}`;\n const cssText = style.cssText\n ? formatCSSText(style)\n : formatCSSProperties(style);\n return document.createTextNode(`${selector}{${cssText}}`);\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo) {\n const style = window.getComputedStyle(nativeNode, pseudo);\n const content = style.getPropertyValue('content');\n if (content === '' || content === 'none') {\n return;\n }\n const className = uuid();\n try {\n clonedNode.className = `${clonedNode.className} ${className}`;\n }\n catch (err) {\n return;\n }\n const styleElement = document.createElement('style');\n styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));\n clonedNode.appendChild(styleElement);\n}\nexport function clonePseudoElements(nativeNode, clonedNode) {\n clonePseudoElement(nativeNode, clonedNode, ':before');\n clonePseudoElement(nativeNode, clonedNode, ':after');\n}\n//# sourceMappingURL=clone-pseudos.js.map","import { getMimeType } from './mimes';\nimport { resourceToDataURL } from './dataurl';\nimport { clonePseudoElements } from './clone-pseudos';\nimport { createImage, toArray } from './util';\nasync function cloneCanvasElement(canvas) {\n const dataURL = canvas.toDataURL();\n if (dataURL === 'data:,') {\n return canvas.cloneNode(false);\n }\n return createImage(dataURL);\n}\nasync function cloneVideoElement(video, options) {\n const poster = video.poster;\n const contentType = getMimeType(poster);\n const dataURL = await resourceToDataURL(poster, contentType, options);\n return createImage(dataURL);\n}\nasync function cloneSingleNode(node, options) {\n if (node instanceof HTMLCanvasElement) {\n return cloneCanvasElement(node);\n }\n if (node instanceof HTMLVideoElement && node.poster) {\n return cloneVideoElement(node, options);\n }\n return node.cloneNode(false);\n}\nconst isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';\nasync function cloneChildren(nativeNode, clonedNode, options) {\n var _a;\n const children = isSlotElement(nativeNode) && nativeNode.assignedNodes\n ? toArray(nativeNode.assignedNodes())\n : toArray(((_a = nativeNode.shadowRoot) !== null && _a !== void 0 ? _a : nativeNode).childNodes);\n if (children.length === 0 || nativeNode instanceof HTMLVideoElement) {\n return clonedNode;\n }\n await children.reduce((deferred, child) => deferred\n .then(() => cloneNode(child, options))\n .then((clonedChild) => {\n if (clonedChild) {\n clonedNode.appendChild(clonedChild);\n }\n }), Promise.resolve());\n return clonedNode;\n}\nfunction cloneCSSStyle(nativeNode, clonedNode) {\n const targetStyle = clonedNode.style;\n if (!targetStyle) {\n return;\n }\n const sourceStyle = window.getComputedStyle(nativeNode);\n if (sourceStyle.cssText) {\n targetStyle.cssText = sourceStyle.cssText;\n targetStyle.transformOrigin = sourceStyle.transformOrigin;\n }\n else {\n toArray(sourceStyle).forEach((name) => {\n let value = sourceStyle.getPropertyValue(name);\n if (name === 'font-size' && value.endsWith('px')) {\n const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;\n value = `${reducedFont}px`;\n }\n targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));\n });\n }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n if (nativeNode instanceof HTMLTextAreaElement) {\n clonedNode.innerHTML = nativeNode.value;\n }\n if (nativeNode instanceof HTMLInputElement) {\n clonedNode.setAttribute('value', nativeNode.value);\n }\n}\nfunction cloneSelectValue(nativeNode, clonedNode) {\n if (nativeNode instanceof HTMLSelectElement) {\n const clonedSelect = clonedNode;\n const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));\n if (selectedOption) {\n selectedOption.setAttribute('selected', '');\n }\n }\n}\nfunction decorate(nativeNode, clonedNode) {\n if (clonedNode instanceof Element) {\n cloneCSSStyle(nativeNode, clonedNode);\n clonePseudoElements(nativeNode, clonedNode);\n cloneInputValue(nativeNode, clonedNode);\n cloneSelectValue(nativeNode, clonedNode);\n }\n return clonedNode;\n}\nexport async function cloneNode(node, options, isRoot) {\n if (!isRoot && options.filter && !options.filter(node)) {\n return null;\n }\n return Promise.resolve(node)\n .then((clonedNode) => cloneSingleNode(clonedNode, options))\n .then((clonedNode) => cloneChildren(node, clonedNode, options))\n .then((clonedNode) => decorate(node, clonedNode));\n}\n//# sourceMappingURL=clone-node.js.map","import { resolveUrl } from './util';\nimport { getMimeType } from './mimes';\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl';\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction toRegex(url) {\n // eslint-disable-next-line no-useless-escape\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g');\n}\nexport function parseURLs(cssText) {\n const urls = [];\n cssText.replace(URL_REGEX, (raw, quotation, url) => {\n urls.push(url);\n return raw;\n });\n return urls.filter((url) => !isDataUrl(url));\n}\nexport async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {\n try {\n const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n const contentType = getMimeType(resourceURL);\n let dataURL;\n if (getContentFromUrl) {\n const content = await getContentFromUrl(resolvedURL);\n dataURL = makeDataUrl(content, contentType);\n }\n else {\n dataURL = await resourceToDataURL(resolvedURL, contentType, options);\n }\n return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);\n }\n catch (error) {\n // pass\n }\n return cssText;\n}\nfunction filterPreferredFontFormat(str, { preferredFontFormat }) {\n return !preferredFontFormat\n ? str\n : str.replace(FONT_SRC_REGEX, (match) => {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];\n if (!format) {\n return '';\n }\n if (format === preferredFontFormat) {\n return `src: ${src};`;\n }\n }\n });\n}\nexport function shouldEmbed(url) {\n return url.search(URL_REGEX) !== -1;\n}\nexport async function embedResources(cssText, baseUrl, options) {\n if (!shouldEmbed(cssText)) {\n return cssText;\n }\n const filteredCSSText = filterPreferredFontFormat(cssText, options);\n const urls = parseURLs(filteredCSSText);\n return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));\n}\n//# sourceMappingURL=embed-resources.js.map","import { embedResources } from './embed-resources';\nimport { toArray } from './util';\nimport { isDataUrl, resourceToDataURL } from './dataurl';\nimport { getMimeType } from './mimes';\nasync function embedBackground(clonedNode, options) {\n var _a;\n const background = (_a = clonedNode.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue('background');\n if (background) {\n const cssString = await embedResources(background, null, options);\n clonedNode.style.setProperty('background', cssString, clonedNode.style.getPropertyPriority('background'));\n }\n}\nasync function embedImageNode(clonedNode, options) {\n if (!(clonedNode instanceof HTMLImageElement && !isDataUrl(clonedNode.src)) &&\n !(clonedNode instanceof SVGImageElement &&\n !isDataUrl(clonedNode.href.baseVal))) {\n return;\n }\n const url = clonedNode instanceof HTMLImageElement\n ? clonedNode.src\n : clonedNode.href.baseVal;\n const dataURL = await resourceToDataURL(url, getMimeType(url), options);\n await new Promise((resolve, reject) => {\n clonedNode.onload = resolve;\n clonedNode.onerror = reject;\n if (clonedNode instanceof HTMLImageElement) {\n clonedNode.srcset = '';\n clonedNode.src = dataURL;\n }\n else {\n clonedNode.href.baseVal = dataURL;\n }\n });\n}\nasync function embedChildren(clonedNode, options) {\n const children = toArray(clonedNode.childNodes);\n const deferreds = children.map((child) => embedImages(child, options));\n await Promise.all(deferreds).then(() => clonedNode);\n}\nexport async function embedImages(clonedNode, options) {\n if (clonedNode instanceof Element) {\n await embedBackground(clonedNode, options);\n await embedImageNode(clonedNode, options);\n await embedChildren(clonedNode, options);\n }\n}\n//# sourceMappingURL=embed-images.js.map","export function applyStyle(node, options) {\n const { style } = node;\n if (options.backgroundColor) {\n style.backgroundColor = options.backgroundColor;\n }\n if (options.width) {\n style.width = `${options.width}px`;\n }\n if (options.height) {\n style.height = `${options.height}px`;\n }\n const manual = options.style;\n if (manual != null) {\n Object.keys(manual).forEach((key) => {\n style[key] = manual[key];\n });\n }\n return node;\n}\n//# sourceMappingURL=apply-style.js.map","import { toArray } from './util';\nimport { fetchAsDataURL } from './dataurl';\nimport { shouldEmbed, embedResources } from './embed-resources';\nconst cssFetchCache = {};\nasync function fetchCSS(url) {\n let cache = cssFetchCache[url];\n if (cache != null) {\n return cache;\n }\n const res = await fetch(url);\n const cssText = await res.text();\n cache = { url, cssText };\n cssFetchCache[url] = cache;\n return cache;\n}\nasync function embedFonts(data, options) {\n let cssText = data.cssText;\n const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g;\n const fontLocs = cssText.match(/url\\([^)]+\\)/g) || [];\n const loadFonts = fontLocs.map(async (loc) => {\n let url = loc.replace(regexUrl, '$1');\n if (!url.startsWith('https://')) {\n url = new URL(url, data.url).href;\n }\n return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {\n cssText = cssText.replace(loc, `url(${result})`);\n return [loc, result];\n });\n });\n return Promise.all(loadFonts).then(() => cssText);\n}\nfunction parseCSS(source) {\n if (source == null) {\n return [];\n }\n const result = [];\n const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi;\n // strip out comments\n let cssText = source.replace(commentsRegex, '');\n // eslint-disable-next-line prefer-regex-literals\n const keyframesRegex = new RegExp('((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})', 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const matches = keyframesRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n result.push(matches[0]);\n }\n cssText = cssText.replace(keyframesRegex, '');\n const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n // to match css & media queries together\n const combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})';\n // unified regex\n const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let matches = importRegex.exec(cssText);\n if (matches === null) {\n matches = unifiedRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n else {\n importRegex.lastIndex = unifiedRegex.lastIndex;\n }\n }\n else {\n unifiedRegex.lastIndex = importRegex.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nasync function getCSSRules(styleSheets, options) {\n const ret = [];\n const deferreds = [];\n // First loop inlines imports\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item, index) => {\n if (item.type === CSSRule.IMPORT_RULE) {\n let importIndex = index + 1;\n const url = item.href;\n const deferred = fetchCSS(url)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n try {\n sheet.insertRule(rule, rule.startsWith('@import')\n ? (importIndex += 1)\n : sheet.cssRules.length);\n }\n catch (error) {\n console.error('Error inserting rule from remote css', {\n rule,\n error,\n });\n }\n }))\n .catch((e) => {\n console.error('Error loading remote css', e.toString());\n });\n deferreds.push(deferred);\n }\n });\n }\n catch (e) {\n const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];\n if (sheet.href != null) {\n deferreds.push(fetchCSS(sheet.href)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n inline.insertRule(rule, sheet.cssRules.length);\n }))\n .catch((err) => {\n console.error('Error loading remote stylesheet', err.toString());\n }));\n }\n console.error('Error inlining remote css file', e.toString());\n }\n }\n });\n return Promise.all(deferreds).then(() => {\n // Second loop parses rules\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item) => {\n ret.push(item);\n });\n }\n catch (e) {\n console.error(`Error while reading CSS rules from ${sheet.href}`, e.toString());\n }\n }\n });\n return ret;\n });\n}\nfunction getWebFontRules(cssRules) {\n return cssRules\n .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));\n}\nasync function parseWebFontRules(node, options) {\n if (node.ownerDocument == null) {\n throw new Error('Provided element is not within a Document');\n }\n const styleSheets = toArray(node.ownerDocument.styleSheets);\n const cssRules = await getCSSRules(styleSheets, options);\n return getWebFontRules(cssRules);\n}\nexport async function getWebFontCSS(node, options) {\n const rules = await parseWebFontRules(node, options);\n const cssTexts = await Promise.all(rules.map((rule) => {\n const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;\n return embedResources(rule.cssText, baseUrl, options);\n }));\n return cssTexts.join('\\n');\n}\nexport async function embedWebFonts(clonedNode, options) {\n const cssText = options.fontEmbedCSS != null\n ? options.fontEmbedCSS\n : options.skipFonts\n ? null\n : await getWebFontCSS(clonedNode, options);\n if (cssText) {\n const styleNode = document.createElement('style');\n const sytleContent = document.createTextNode(cssText);\n styleNode.appendChild(sytleContent);\n if (clonedNode.firstChild) {\n clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n }\n else {\n clonedNode.appendChild(styleNode);\n }\n }\n}\n//# sourceMappingURL=embed-webfonts.js.map","import { cloneNode } from './clone-node';\nimport { embedImages } from './embed-images';\nimport { applyStyle } from './apply-style';\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts';\nimport { getImageSize, getPixelRatio, createImage, canvasToBlob, nodeToDataURL, checkCanvasDimensions, } from './util';\nexport async function toSvg(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const clonedNode = (await cloneNode(node, options, true));\n await embedWebFonts(clonedNode, options);\n await embedImages(clonedNode, options);\n applyStyle(clonedNode, options);\n const datauri = await nodeToDataURL(clonedNode, width, height);\n return datauri;\n}\nexport async function toCanvas(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const svg = await toSvg(node, options);\n const img = await createImage(svg);\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const ratio = options.pixelRatio || getPixelRatio();\n const canvasWidth = options.canvasWidth || width;\n const canvasHeight = options.canvasHeight || height;\n canvas.width = canvasWidth * ratio;\n canvas.height = canvasHeight * ratio;\n if (!options.skipAutoScale) {\n checkCanvasDimensions(canvas);\n }\n canvas.style.width = `${canvasWidth}`;\n canvas.style.height = `${canvasHeight}`;\n if (options.backgroundColor) {\n context.fillStyle = options.backgroundColor;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n context.drawImage(img, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nexport async function toPixelData(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const canvas = await toCanvas(node, options);\n const ctx = canvas.getContext('2d');\n return ctx.getImageData(0, 0, width, height).data;\n}\nexport async function toPng(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL();\n}\nexport async function toJpeg(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL('image/jpeg', options.quality || 1);\n}\nexport async function toBlob(node, options = {}) {\n const canvas = await toCanvas(node, options);\n const blob = await canvasToBlob(canvas);\n return blob;\n}\nexport async function getFontEmbedCSS(node, options = {}) {\n return getWebFontCSS(node, options);\n}\n//# sourceMappingURL=index.js.map","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var defaults$5 = {exports: {}};\n\n function getDefaults$1() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults$1(newDefaults) {\n defaults$5.exports.defaults = newDefaults;\n }\n\n defaults$5.exports = {\n defaults: getDefaults$1(),\n getDefaults: getDefaults$1,\n changeDefaults: changeDefaults$1\n };\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape$2(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape$1(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit$1(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl$1(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim$1(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest$1 = {\n exec: function noopTest() {}\n };\n\n function merge$2(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells$1(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim$1(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket$1(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation$1(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n function repeatString$1(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n var helpers = {\n escape: escape$2,\n unescape: unescape$1,\n edit: edit$1,\n cleanUrl: cleanUrl$1,\n resolveUrl: resolveUrl,\n noopTest: noopTest$1,\n merge: merge$2,\n splitCells: splitCells$1,\n rtrim: rtrim$1,\n findClosingBracket: findClosingBracket$1,\n checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n repeatString: repeatString$1\n };\n\n var defaults$4 = defaults$5.exports.defaults;\n var rtrim = helpers.rtrim,\n splitCells = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$4;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n bcurr,\n bnext,\n addBack,\n loose,\n istask,\n ischecked,\n endMatch;\n var l = itemMatch.length;\n bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item;\n\n if (!this.options.pedantic) {\n // Determine if current item contains the end of the list\n endMatch = item.match(new RegExp('\\\\n\\\\s*\\\\n {0,' + (bcurr[0].length - 1) + '}\\\\S'));\n\n if (endMatch) {\n addBack = item.length - endMatch.index + itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n item = item.substring(0, endMatch.index);\n raw = item;\n l = i + 1;\n }\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);\n\n if (!this.options.pedantic ? bnext[1].length >= bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {\n // nested list or continuation\n itemMatch.splice(i, 2, itemMatch[i] + (!this.options.pedantic && bnext[1].length < bcurr[0].length && !itemMatch[i].match(/\\n$/) ? '' : '\\n') + itemMatch[i + 1]);\n i--;\n l--;\n continue;\n } else if ( // different bullet style\n !this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {\n addBack = itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n i = l - 1;\n }\n\n bcurr = bnext;\n } // Remove the list item's bullet\n // so it is seen as the next token.\n\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+[.)]) ?/, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // trim item newlines at end\n\n\n item = rtrim(item, '\\n');\n\n if (i !== l - 1) {\n raw = raw + '\\n';\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(raw);\n\n if (i !== l - 1) {\n next = raw.slice(-2) === '\\n\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^<a /i.test(cap[0])) {\n inLink = true;\n } else if (inLink && /^<\\/a>/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!/>$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^</.test(href)) {\n if (this.options.pedantic && !/>$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0]);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(1, lLength + match.index + rLength)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(2, lLength + match.index + rLength - 1)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2]\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest = helpers.noopTest,\n edit = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block$1 = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?! {0,3}bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block$1.item = /^( *)(bull) ?[^\\n]*(?:\\n(?! *bull ?)[^\\n]*)*/;\n block$1.item = edit(block$1.item, 'gm').replace(/bull/g, block$1.bullet).getRegex();\n block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block$1._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\n block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block$1.normal = merge$1({}, block$1);\n /**\n * GFM Block Grammar\n */\n\n block$1.gfm = merge$1({}, block$1.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' {0,3}\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block$1.gfm.nptable = edit(block$1.gfm.nptable).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block$1.pedantic = merge$1({}, block$1.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline$1 = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /\\_\\_[^_*]*?\\*[^_*]*?\\_\\_|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /\\*\\*[^_*]*?\\_[^_*]*?\\*\\*|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^([\\spunctuation])/\n }; // list of punctuation marks from CommonMark spec\n // without * and _ to handle the different emphasis markers * and _\n\n inline$1._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\n inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>\n\n inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline$1.normal = merge$1({}, inline$1);\n /**\n * Pedantic Inline Grammar\n */\n\n inline$1.pedantic = merge$1({}, inline$1.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline$1.gfm = merge$1({}, inline$1.normal, {\n escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n });\n inline$1.gfm.url = edit(inline$1.gfm.url, 'i').replace('email', inline$1.gfm._extended_email).getRegex();\n /**\n * GFM + Line Breaks Inline Grammar\n */\n\n inline$1.breaks = merge$1({}, inline$1.gfm, {\n br: edit(inline$1.br).replace('{2,}', '*').getRegex(),\n text: edit(inline$1.gfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n });\n var rules = {\n block: block$1,\n inline: inline$1\n };\n\n var Tokenizer$1 = Tokenizer_1;\n var defaults$3 = defaults$5.exports.defaults;\n var block = rules.block,\n inline = rules.inline;\n var repeatString = helpers.repeatString;\n /**\n * smartypants text replacement\n */\n\n function smartypants(text) {\n return text // em-dashes\n .replace(/---/g, \"\\u2014\") // en-dashes\n .replace(/--/g, \"\\u2013\") // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\") // closing singles & apostrophes\n .replace(/'/g, \"\\u2019\") // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\") // closing doubles\n .replace(/\"/g, \"\\u201D\") // ellipses\n .replace(/\\.{3}/g, \"\\u2026\");\n }\n /**\n * mangle email addresses\n */\n\n\n function mangle(text) {\n var out = '',\n i,\n ch;\n var l = text.length;\n\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$3;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n\n var token, i, l, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call(_this, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call(this, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call(_this2, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n tokens.push(token);\n } else if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call(this, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$2 = defaults$5.exports.defaults;\n var cleanUrl = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$2;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"' + this.options.langPrefix + escape$1(lang, true) + '\">' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h' + level + ' id=\"' + this.options.headerPrefix + slugger.slug(raw) + '\">' + text + '</h' + level + '>\\n';\n } // ignore IDs\n\n\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '<li>' + text + '</li>\\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? ' /' : '') + '> ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '<p>' + text + '</p>\\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '<strong>' + text + '</strong>';\n };\n\n _proto.em = function em(text) {\n return '<em>' + text + '</em>';\n };\n\n _proto.codespan = function codespan(text) {\n return '<code>' + text + '</code>';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n };\n\n _proto.del = function del(text) {\n return '<del>' + text + '</del>';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '<a href=\"' + escape$1(href) + '\"';\n\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n\n out += '>' + text + '</a>';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n\n out += this.options.xhtml ? '/>' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n var Renderer$1 = Renderer_1;\n var TextRenderer$1 = TextRenderer_1;\n var Slugger$1 = Slugger_1;\n var defaults$1 = defaults$5.exports.defaults;\n var unescape = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$1;\n this.options.renderer = this.options.renderer || new Renderer$1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer$1();\n this.slugger = new Slugger$1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call(this, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call(this, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var Lexer = Lexer_1;\n var Parser = Parser_1;\n var Tokenizer = Tokenizer_1;\n var Renderer = Renderer_1;\n var TextRenderer = TextRenderer_1;\n var Slugger = Slugger_1;\n var merge = helpers.merge,\n checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n escape = helpers.escape;\n var getDefaults = defaults$5.exports.getDefaults,\n changeDefaults = defaults$5.exports.changeDefaults,\n defaults = defaults$5.exports.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(_this, token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n","var _arity =\n/*#__PURE__*/\nrequire(\"./internal/_arity.js\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./internal/_curry2.js\");\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nmodule.exports = bind;","function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}\n\nmodule.exports = _arity;","var _isArray =\n/*#__PURE__*/\nrequire(\"./_isArray.js\");\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implementation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\n\n\nfunction _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n\n if (length === 0) {\n return fn();\n }\n\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}\n\nmodule.exports = _checkForMethod;","var _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder.js\");\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}\n\nmodule.exports = _curry1;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1.js\");\n\nvar _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder.js\");\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}\n\nmodule.exports = _curry2;","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1.js\");\n\nvar _curry2 =\n/*#__PURE__*/\nrequire(\"./_curry2.js\");\n\nvar _isPlaceholder =\n/*#__PURE__*/\nrequire(\"./_isPlaceholder.js\");\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}\n\nmodule.exports = _curry3;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nmodule.exports = Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","var _curry1 =\n/*#__PURE__*/\nrequire(\"./_curry1.js\");\n\nvar _isArray =\n/*#__PURE__*/\nrequire(\"./_isArray.js\");\n\nvar _isString =\n/*#__PURE__*/\nrequire(\"./_isString.js\");\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n * _isArrayLike({nodeType: 1, length: 1}) // => false\n */\n\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nmodule.exports = _isArrayLike;","function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}\n\nmodule.exports = _isPlaceholder;","function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}\n\nmodule.exports = _isString;","function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}\n\nmodule.exports = _pipe;","var _isArrayLike =\n/*#__PURE__*/\nrequire(\"./_isArrayLike.js\");\n\nvar _xwrap =\n/*#__PURE__*/\nrequire(\"./_xwrap.js\");\n\nvar bind =\n/*#__PURE__*/\nrequire(\"../bind.js\");\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\n\nfunction _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}\n\nmodule.exports = _reduce;","var XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nfunction _xwrap(fn) {\n return new XWrap(fn);\n}\n\nmodule.exports = _xwrap;","var _arity =\n/*#__PURE__*/\nrequire(\"./internal/_arity.js\");\n\nvar _pipe =\n/*#__PURE__*/\nrequire(\"./internal/_pipe.js\");\n\nvar reduce =\n/*#__PURE__*/\nrequire(\"./reduce.js\");\n\nvar tail =\n/*#__PURE__*/\nrequire(\"./tail.js\");\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n * @symb R.pipe(f, g, h)(a)(b) = h(g(f(a)))(b)\n */\n\n\nfunction pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}\n\nmodule.exports = pipe;","var _curry3 =\n/*#__PURE__*/\nrequire(\"./internal/_curry3.js\");\n\nvar _reduce =\n/*#__PURE__*/\nrequire(\"./internal/_reduce.js\");\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nmodule.exports = reduce;","var _curry3 =\n/*#__PURE__*/\nrequire(\"./internal/_curry3.js\");\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\n\n\nvar replace =\n/*#__PURE__*/\n_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\n\nmodule.exports = replace;","var _checkForMethod =\n/*#__PURE__*/\nrequire(\"./internal/_checkForMethod.js\");\n\nvar _curry3 =\n/*#__PURE__*/\nrequire(\"./internal/_curry3.js\");\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\n\n\nvar slice =\n/*#__PURE__*/\n_curry3(\n/*#__PURE__*/\n_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\n\nmodule.exports = slice;","var _checkForMethod =\n/*#__PURE__*/\nrequire(\"./internal/_checkForMethod.js\");\n\nvar _curry1 =\n/*#__PURE__*/\nrequire(\"./internal/_curry1.js\");\n\nvar slice =\n/*#__PURE__*/\nrequire(\"./slice.js\");\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\n\n\nvar tail =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_checkForMethod('tail',\n/*#__PURE__*/\nslice(1, Infinity)));\n\nmodule.exports = tail;","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","import parentLogger from './logger/logger'\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport Store from './store/Store'\nimport DiagramFrame from \"@/components/DiagramFrame.vue\";\n\nimport './assets/tailwind.css'\nimport './components/Cosmetic.scss'\nimport './components/Cosmetic-blue.scss'\nimport './components/Cosmetic-black-white.scss'\nimport './components/Cosmetic-star-uml.scss'\nimport './components/theme-blue-river.scss'\nimport './assets/themes/handwriting.css';\n\nconst logger = parentLogger.child({component: 'core'})\n\ninterface IZenUml {\n get code(): string | undefined;\n get theme(): string | undefined;\n // Resolve after rendering is finished.\n render: (code: string | undefined, theme: string | undefined) => Promise<IZenUml>\n}\n\nVue.use(Vuex)\n\nexport default class ZenUml implements IZenUml{\n private readonly el: Element;\n private _code: string | undefined;\n private _theme: string | undefined;\n private readonly store: any;\n private readonly app: any;\n\n constructor(el: Element) {\n this.el = el;\n this.store = Store();\n this.app = new Vue({el: this.el, store: new Vuex.Store(this.store), render: h => h(DiagramFrame) })\n }\n\n async render(code: string | undefined, theme: string | undefined): Promise<IZenUml> {\n logger.debug('rendering', code, theme)\n this._code = code || this._code;\n this._theme = theme || this._theme;\n // @ts-ignore\n this.store.state.code = this._code;\n // @ts-ignore\n this.store.state.theme = this._theme || 'default';\n await this.app.$nextTick();\n return Promise.resolve(this);\n }\n\n get code(): string | undefined {\n return this._code;\n }\n\n get theme(): string | undefined{\n return this._theme;\n }\n}","import pino from 'pino';\n\nconst logger = pino({\n level: 'debug',\n browser: {\n asObject: true,\n serialize: true\n }\n});\n\nexport default logger;\n","interface Pos {\n line: number;\n col: number;\n}\n\nexport class CodeRange {\n start: Pos;\n stop: Pos;\n\n private constructor(startLine: number, startCol: number, endLine: number, endCol: number) {\n this.start = {line: startLine, col: startCol};\n this.stop = {line: endLine, col:endCol};\n }\n\n public static from(context: any) {\n const start = context.start;\n const stop = context.stop;\n return new CodeRange(start.line, start.column, stop.line, stop.column+stop.text.length);\n }\n}\n","const sequenceParser = require('../generated-parser/sequenceParser')\n\nconst seqParser = sequenceParser.sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst StatContext = seqParser.StatContext;\nconst MessageContext = seqParser.MessageContext\nconst AsyncMessageContext = seqParser.AsyncMessageContext\nconst RetContext = seqParser.RetContext\n\nCreationContext.prototype.From = function () {\n if (this.parentCtx instanceof StatContext) {\n return this.ClosestAncestorStat().Origin()\n }\n return undefined;\n}\n\nMessageContext.prototype.ProvidedFrom = function() {\n return this.messageBody()?.from()?.getFormattedText();\n}\nMessageContext.prototype.From = function () {\n return this.ProvidedFrom() || this.ClosestAncestorStat().Origin();\n}\n\nAsyncMessageContext.prototype.From = function () {\n if (this.from()) {\n return this.from().getFormattedText();\n }\n return this.ClosestAncestorStat().Origin();\n}\n\nRetContext.prototype.From = function () {\n return this.ClosestAncestorStat().Origin();\n}\nexport {}\n","import mergeWith from 'lodash/mergeWith';\nexport enum ParticipantType {\n Actor = 1,\n Boundary,\n Collection,\n Control,\n Database,\n Entity,\n Queue,\n EC2,\n ECS,\n IAM,\n Lambda,\n RDS,\n S3,\n Undefined\n}\nexport class Participant {\n name: string;\n private stereotype: string | undefined;\n private width: number | undefined;\n private groupId: number | string | undefined;\n private explicit: boolean | undefined;\n isStarter: boolean | undefined;\n private label: string | undefined;\n private type: string | undefined;\n private color: string | undefined;\n\n constructor(name: string,\n isStarter?: boolean,\n stereotype?: string,\n width?: number,\n groupId?: number | string,\n label?: string,\n explicit?: boolean,\n type?: string,\n color?: string\n ) {\n this.name = name;\n this.stereotype = stereotype;\n this.width = width;\n this.groupId = groupId;\n this.explicit = explicit;\n this.isStarter = isStarter;\n this.label = label;\n this.type = type;\n this.color = color;\n }\n\n public Type(): ParticipantType {\n switch (this.type?.toLowerCase()) {\n case '@actor':\n return ParticipantType.Actor;\n case '@boundary':\n return ParticipantType.Boundary;\n case '@collection':\n return ParticipantType.Collection;\n case '@control':\n return ParticipantType.Control;\n case '@database':\n return ParticipantType.Database;\n case '@entity':\n return ParticipantType.Entity;\n case '@queue':\n return ParticipantType.Queue;\n\n case '@ec2':\n return ParticipantType.EC2;\n case '@ecs':\n return ParticipantType.ECS;\n case '@iam':\n return ParticipantType.IAM;\n case '@lambda':\n return ParticipantType.Lambda;\n case '@rds':\n return ParticipantType.RDS;\n case '@s3':\n return ParticipantType.S3;\n }\n return ParticipantType.Undefined;\n }\n}\n\nexport class Participants {\n private participants = new Map();\n\n public Add(name: string): void;\n public Add(name: string, isStarter: boolean): void;\n public Add(name: string,\n isStarter?: boolean,\n stereotype?: string,\n width?: number,\n groupId?: number | string,\n label?: string,\n explicit?: boolean): void;\n public Add(name: string,\n isStarter?: boolean,\n stereotype?: string,\n width?: number,\n groupId?: number | string,\n label?: string,\n explicit?: boolean,\n type?: string,\n color?: string): void {\n const participant = new Participant(name, isStarter, stereotype, width, groupId, label, explicit, type, color);\n this.participants.set(name, mergeWith({}, this.Get(name), participant, (a, b) => a || b));\n }\n\n // Returns an array of participants that are deduced from messages\n // It does not include the Starter.\n ImplicitArray() {\n return this.Array()\n .filter(p => !p.explicit && !p.isStarter)\n }\n\n // Items in entries are in the order of entry insertion:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n private Array() {\n return Array.from(this.participants.entries())\n .map(entry => entry[1]);\n }\n\n Names() {\n return Array.from(this.participants.keys())\n }\n\n First() {\n return this.participants.values().next().value\n }\n\n Get(name: string) {\n return this.participants.get(name);\n }\n\n Size() {\n return this.participants.size;\n }\n\n Starter() {\n const first = this.First();\n // const type = first.name === 'User' || first.name === 'Actor' ? 'actor' : undefined;\n return first.isStarter? first : undefined;\n }\n}\n","\n// Owner is the `to` for a message or the name in the creation.\nconst sequenceParser = require('../generated-parser/sequenceParser')\n\nconst seqParser = sequenceParser.sequenceParser;\nconst MessageContext = seqParser.MessageContext;\nconst AsyncMessageContext = seqParser.AsyncMessageContext;\nconst CreationContext = seqParser.CreationContext;\n\nMessageContext.prototype.SignatureText = function () {\n return this.messageBody()?.func()?.signature()?.map((s: any) => s?.getFormattedText()).join('.');\n}\n\nAsyncMessageContext.prototype.SignatureText = function () {\n return this.content()?.getFormattedText()\n}\n\nCreationContext.prototype.SignatureText = function () {\n const params = this.creationBody().parameters()\n const text = (params?.parameter()?.length > 0) ? params.getFormattedText() : 'create'\n return '«' + text + '»'\n}\n","import {antlr4} from \"@/positioning/ParticipantListener\";\n\nantlr4.ParserRuleContext.prototype.Key = function() {\n return `${this.start.start}:${this.stop.stop}`;\n};\n","const antlr4 = require('antlr4/index');\nconst sequenceParser = require('../../../generated-parser/sequenceParser')\n\nconst seqParser = sequenceParser.sequenceParser;\nconst StatContext = seqParser.StatContext;\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorStat = function() {\n let current = this;\n while(!(current instanceof StatContext)) {\n current = current.parentCtx;\n }\n if (current instanceof StatContext) {\n return current;\n }\n return undefined;\n}\n\nantlr4.ParserRuleContext.prototype.ClosestAncestorBlock = function() {\n const parentCtx = this.ClosestAncestorStat()?.parentCtx;\n // if parent is a block, return it\n if (parentCtx instanceof seqParser.BlockContext) {\n return parentCtx;\n }\n console.warn('Cannot find closest ancestor block for context:', this);\n return undefined;\n}\n\nexport {}\n","export const MINI_GAP = 100;\nexport const MARGIN = 20;\nexport const ARROW_HEAD_WIDTH = 10;\nexport const MIN_PARTICIPANT_WIDTH = 100;","export enum TextType {\n MessageContent,\n ParticipantName,\n}\n\nexport interface WidthFunc {\n (text: string, type: TextType): number;\n}\n\n","import {ARROW_HEAD_WIDTH, MARGIN, MIN_PARTICIPANT_WIDTH, MINI_GAP} from \"@/positioning/Constants\";\nimport {TextType, WidthFunc} from \"@/positioning/Coordinate\";\nimport {OrderedParticipants} from \"@/positioning/OrderedParticipants\";\nimport {IParticipantModel} from \"@/positioning/ParticipantListener\";\nimport {find_optimal} from \"@/positioning/david/DavidEisenstat\";\nimport {AllMessages} from \"@/positioning/MessageContextListener\";\nimport {OwnableMessage, OwnableMessageType} from \"@/positioning/OwnableMessage\";\n\nexport class Coordinates {\n private m: Array<Array<number>> = [];\n private readonly widthProvider: WidthFunc;\n private readonly participantModels: IParticipantModel[];\n private readonly ownableMessages: OwnableMessage[];\n\n constructor(ctx: any, widthProvider: WidthFunc) {\n this.participantModels = OrderedParticipants(ctx);\n this.ownableMessages = AllMessages(ctx);\n\n this.widthProvider = widthProvider;\n this.walkThrough();\n }\n\n getPosition(participantName: string|undefined): number {\n const pIndex = this.participantModels.findIndex(p => p.name === participantName);\n if(pIndex === -1) {\n throw Error(`Participant ${participantName} not found`);\n }\n return this.getParticipantGap(this.participantModels[0]) + find_optimal(this.m)[pIndex] + ARROW_HEAD_WIDTH;\n }\n\n walkThrough() {\n this.withParticipantGaps(this.participantModels);\n this.withMessageGaps(this.ownableMessages, this.participantModels);\n }\n\n private withMessageGaps(ownableMessages: OwnableMessage[], participantModels: IParticipantModel[]) {\n ownableMessages.forEach((message) => {\n const indexFrom = participantModels.findIndex(p => p.name === message.from);\n const indexTo = participantModels.findIndex(p => p.name === message.to);\n if(indexFrom === -1 || indexTo === -1) {\n console.warn(`Participant ${message.from} or ${message.to} not found`);\n return;\n }\n let leftIndex = Math.min(indexFrom, indexTo);\n let rightIndex = Math.max(indexFrom, indexTo);\n try {\n let messageWidth = this.getMessageWidth(message);\n this.m[leftIndex][rightIndex] = Math.max(messageWidth + ARROW_HEAD_WIDTH, this.m[leftIndex][rightIndex]);\n } catch (e) {\n console.warn(`Could not set message gap between ${message.from} and ${message.to}`);\n }\n })\n }\n\n private getMessageWidth(message: OwnableMessage) {\n const halfSelf = Coordinates.half(this.widthProvider, message.to);\n let messageWidth = this.widthProvider(message.signature, TextType.MessageContent);\n // hack for creation message\n if (message.type === OwnableMessageType.CreationMessage) {\n messageWidth += halfSelf;\n }\n return messageWidth;\n }\n private withParticipantGaps(participantModels: IParticipantModel[]) {\n this.m = participantModels.map((_, i) => {\n return participantModels.map((v, j) => {\n return (j - i === 1) ? this.getParticipantGap(v) : 0;\n });\n });\n }\n\n private getParticipantGap(p: IParticipantModel) {\n let leftNameOrLabel = this.labelOrName(p.left);\n const halfLeft = Coordinates.half(this.widthProvider, leftNameOrLabel);\n const halfSelf = Coordinates.half(this.widthProvider, p.label || p.name);\n const leftIsVisible = p.left && p.left !== '_STARTER_';\n const selfIsVisible = p.name && p.name !== '_STARTER_';\n return ((leftIsVisible && halfLeft) || 0) + ((selfIsVisible && halfSelf) || 0);\n }\n\n private labelOrName(name: string) {\n const pIndex = this.participantModels.findIndex(p => p.name === name);\n if (pIndex === -1) return '';\n return this.participantModels[pIndex].label || this.participantModels[pIndex].name;\n }\n\n private static half(widthProvider: WidthFunc, participantName: string | undefined) {\n if (participantName === '_STARTER_') {\n return MARGIN/2;\n }\n const halfLeftParticipantWidth = this.halfWithMargin(widthProvider, participantName);\n return Math.max(halfLeftParticipantWidth, MINI_GAP / 2);\n }\n\n private static halfWithMargin(widthProvider: WidthFunc, participant: string | undefined) {\n return this._getParticipantWidth(widthProvider, participant) / 2 + MARGIN / 2;\n }\n\n private static _getParticipantWidth(widthProvider: WidthFunc, participant: string | undefined) {\n return Math.max(widthProvider(participant || '', TextType.ParticipantName), MIN_PARTICIPANT_WIDTH);\n }\n\n getWidth() {\n const lastParticipant = this.participantModels[this.participantModels.length - 1].name;\n const calculatedWidth = this.getPosition(lastParticipant) + Coordinates.halfWithMargin(this.widthProvider, lastParticipant);\n return Math.max(calculatedWidth, 200);\n }\n}\n","import {OwnableMessage, OwnableMessageType} from \"./OwnableMessage\";\nimport {antlr4} from \"@/positioning/ParticipantListener\";\n\nconst sequenceParserListener = require('@/generated-parser/sequenceParserListener');\n\nexport class MessageContextListener extends sequenceParserListener.sequenceParserListener {\n private isBlind = false;\n private ownableMessages: Array<OwnableMessage> = [];\n\n enterMessage = (ctx: any) => this._addOwnedMessage(OwnableMessageType.SyncMessage)(ctx);\n enterAsyncMessage = (ctx: any) => this._addOwnedMessage(OwnableMessageType.AsyncMessage)(ctx);\n enterCreation = (ctx: any) => this._addOwnedMessage(OwnableMessageType.CreationMessage)(ctx);\n\n private _addOwnedMessage = (type: OwnableMessageType) => (ctx: any) => {\n if (this.isBlind) {\n return;\n }\n let from = ctx.From();\n const owner = ctx?.Owner();\n const signature = ctx?.SignatureText();\n this.ownableMessages.push({from: from, signature: signature, type, to: owner});\n }\n\n enterParameters() {\n this.isBlind = true;\n }\n\n exitParameters() {\n this.isBlind = false;\n }\n\n result() {\n return this.ownableMessages;\n }\n}\n\n// Returns all messages grouped by owner participant\nexport function AllMessages(ctx: any) {\n const walker = antlr4.tree.ParseTreeWalker.DEFAULT\n\n const listener = new MessageContextListener();\n walker.walk(listener, ctx);\n return listener.result();\n}\n","import {antlr4, ParticipantListener} from \"../positioning/ParticipantListener\";\n\nexport function OrderedParticipants(rootContext: any) {\n const listener = new ParticipantListener();\n const walker = antlr4.tree.ParseTreeWalker.DEFAULT\n walker.walk(listener, rootContext)\n return listener.result();\n}\n","export enum OwnableMessageType {\n SyncMessage = 0,\n AsyncMessage = 1,\n CreationMessage = 2,\n}\n\nexport interface OwnableMessage {\n from: string;\n to: string;\n signature: string;\n type: OwnableMessageType;\n}\n","export const antlr4 = require('antlr4/index');\nexport let seqDsl = require('../parser/index');\nconst sequenceParserListener = require('@/generated-parser/sequenceParserListener');\nconst sequenceParser = require('../generated-parser/sequenceParser');\nconst seqParser = sequenceParser.sequenceParser;\n\nexport interface IParticipantModel {\n name?: string;\n left: string;\n label?: string;\n}\n\nexport class ParticipantListener extends sequenceParserListener.sequenceParserListener {\n private explicitParticipants: IParticipantModel[] = [];\n private starter: string = '';\n private implicitParticipants: IParticipantModel[] = [];\n private isBlind: boolean = false;\n\n enterCondition() {\n this.isBlind = true;\n }\n\n exitCondition() {\n this.isBlind = false;\n }\n\n enterParameters() {\n this.isBlind = true;\n }\n\n exitParameters() {\n this.isBlind = false;\n }\n\n enterStarter(ctx: any) {\n this.starter = ctx.getFormattedText();\n }\n\n enterParticipant(ctx: any) {\n const name = ctx?.name()?.getFormattedText() || 'Missing `Participant` name';\n const label = ctx.label()?.name()?.getFormattedText();\n const participant = {name, label, left: ''};\n this.explicitParticipants.push(participant);\n }\n\n // 'A' is treated as a Starter in 'A->B:m'\n enterFrom(ctx: any) {\n if (this.isBlind) {\n return;\n }\n\n const name = ctx?.getFormattedText()\n if (ctx.ClosestAncestorBlock().parentCtx instanceof seqParser.ProgContext) {\n if (ctx.ClosestAncestorStat() === ctx.ClosestAncestorBlock().children[0]) {\n this.starter = name;\n return;\n }\n }\n this.enterTo(ctx);\n }\n\n enterTo(ctx: any) {\n if (this.isBlind) {\n return;\n }\n const name = ctx?.getFormattedText()\n if(name === this.starter) {\n return;\n }\n // if explicitParticipants includes name, skip\n if(this.explicitParticipants.some(p => p.name === name)) {\n return;\n }\n const participant = {name, left: ''};\n this.implicitParticipants.push(participant);\n }\n\n enterCreation(ctx: any) {\n if (this.isBlind) {\n return;\n }\n const name = ctx?.Owner();\n if(name === this.starter) {\n return;\n }\n // if explicitParticipants includes name, skip\n if(this.explicitParticipants.some(p => p.name === name)) {\n return;\n }\n const participant = {name, left: ''};\n this.implicitParticipants.push(participant);\n }\n\n result(): IParticipantModel[] {\n let result = [...this.explicitParticipants, ...this.implicitParticipants];\n if (!this._isStarterExplicitlyPositioned()) {\n result.unshift(this._getStarter());\n }\n result = this._dedup(result);\n ParticipantListener._assignLeft(result);\n return result;\n }\n\n private _isStarterExplicitlyPositioned() {\n return this.starter && this.explicitParticipants.find(p => p.name === this.starter);\n }\n\n private _getStarter() {\n return {name: this.starter || '_STARTER_', left: ''};\n }\n\n private _dedup(array: IParticipantModel[]) {\n return array.filter((p, index) => {\n return array.findIndex(p1 => { return p1.name === p.name }) === index;\n })\n }\n\n private static _assignLeft(array: IParticipantModel[]) {\n array.reduce((pre: IParticipantModel, curr: IParticipantModel) => {\n curr.left = pre.name || ''\n return curr;\n }, {name: '', left: ''});\n }\n}\n","import {TextType} from \"@/positioning/Coordinate\";\n\nexport default function WidthProviderOnBrowser(text: string, type: TextType): number {\n let hiddenDiv = document.querySelector('.textarea-hidden-div') as HTMLDivElement;\n if (!hiddenDiv) {\n const newDiv = document.createElement('div');\n newDiv.className = 'textarea-hidden-div '\n newDiv.style.fontSize = '13px';\n newDiv.style.fontFamily = 'Helvetica, Verdana, serif';\n newDiv.style.display = 'inline';\n // newDiv.style.zIndex = '-9999';\n newDiv.style.whiteSpace = 'nowrap';\n newDiv.style.visibility = 'hidden';\n newDiv.style.position = 'absolute';\n newDiv.style.top = '0';\n newDiv.style.left = '0';\n newDiv.style.overflow = 'hidden';\n newDiv.style.width = '0px';\n // newDiv.style.height = '0px';\n newDiv.style.paddingLeft = '20px';\n newDiv.style.paddingRight = '20px';\n newDiv.style.margin = '0px';\n newDiv.style.border = '0px';\n document.body.appendChild(newDiv);\n hiddenDiv = newDiv;\n }\n // hiddenDiv.className = 'textarea-hidden-div ' + (type === TextType.ParticipantName ? 'participant' : 'message');\n\n hiddenDiv.innerHTML = text;\n const scrollWidth = hiddenDiv.scrollWidth;\n return scrollWidth;\n}\n","interface IDual {\n position: number;\n velocity: number;\n}\n\n// Dual numbers represent linear functions of time.\nfunction Dual(p: number, v: number) {\n return { position: p, velocity: v };\n}\n\n// Adds dual numbers x and y.\nfunction dualPlus(x: IDual, y: IDual) {\n return Dual(x.position + y.position, x.velocity + y.velocity);\n}\n\nconst epsilon = Math.sqrt(Number.EPSILON);\n\n// Compares dual numbers x and y by their position at a time infinitesimally\n// after now.\nfunction dualLessThan(x: IDual, y: IDual) {\n let d = x.position - y.position;\n return d < -epsilon || (Math.abs(d) <= epsilon && x.velocity < y.velocity);\n}\n\n// Tracks delta, the length of time for which every pair of arguments to\n// .dualLessThan() maintains the present relation.\nfunction DeltaTracker() {\n return {\n delta: Infinity,\n dualLessThan: function (x: IDual, y: IDual) {\n let lessThan = dualLessThan(x, y);\n if (lessThan) {\n [x, y] = [y, x];\n }\n if (x.velocity < y.velocity) {\n this.delta = Math.min(\n this.delta,\n (x.position - y.position) / (y.velocity - x.velocity)\n );\n }\n return lessThan;\n },\n };\n}\n\n// Converts the adjacency matrix to an adjacency list representation.\nfunction graphFromMatrix(n: number, matrix: Array<Array<number>>) {\n let graph = Array<any>();\n for (let j = 0; j < n; j++) {\n graph.push([]);\n for (let i = 0; i < j; i++) {\n if (matrix[i][j] > 0) {\n graph[j].push({ i: i, length: Dual(matrix[i][j], 0) });\n }\n }\n }\n return graph;\n}\n\n// Essentially the usual algorithm for longest path, but tracks delta.\nfunction longestPathTable(graph: any, gaps: Array<any>): any {\n let tracker = DeltaTracker();\n let maximum = Dual(0, 0);\n let table = [];\n for (let j = 0; j < graph.length; j++) {\n let argument = null;\n if (j > 0) {\n maximum = dualPlus(maximum, gaps[j - 1]);\n }\n for (let edge of graph[j]) {\n let x = dualPlus(table[edge.i].maximum, edge.length);\n if (tracker.dualLessThan(maximum, x)) {\n argument = edge.i;\n maximum = x;\n }\n }\n table.push({ argument: argument, maximum: maximum });\n }\n return [tracker.delta, table];\n}\n\n// Essentially the usual algorithm for decoding the longest path from the\n// dynamic program table.\nfunction freezeCriticalGaps(table: any, graph: any, gaps: Array<any>) {\n let j = table.length - 1;\n while (j > 0) {\n let argument = table[j].argument;\n if (argument !== null) {\n j = argument;\n } else {\n j--;\n gaps[j].velocity = 0;\n }\n }\n}\n\n// Changes the time from now to now + delta.\nfunction advanceGaps(gaps: Array<IDual>, delta: number) {\n for (let i = 0; i < gaps.length; i++) {\n gaps[i].position += gaps[i].velocity * delta;\n }\n}\n\n// Extracts the final result from the dynamic program table.\nfunction positionsFromTable(table: any) {\n let positions = [];\n for (let entry of table) {\n positions.push(entry.maximum.position);\n }\n return positions;\n}\n\n// Entry point for the layout algorithm.\nfunction find_optimal(matrix: Array<Array<number>>) {\n const n = matrix.length;\n let graph = graphFromMatrix(n, matrix);\n let gaps = [];\n for (let j = 1; j < n; j++) {\n gaps.push(Dual(0, 1));\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let [delta, table] = longestPathTable(graph, gaps);\n if (delta == Infinity) {\n return positionsFromTable(table);\n }\n if (table[n - 1].maximum.velocity > 0) {\n freezeCriticalGaps(table, graph, gaps);\n } else {\n advanceGaps(gaps, delta);\n }\n }\n}\n\n\nexport {find_optimal}\n","import now from 'lodash/now'\nimport debounce from 'lodash/debounce'\nimport {RootContext, Participants, GroupContext, ParticipantContext} from '../parser/index.js'\n\nimport WidthProviderOnBrowser from \"@/positioning/WidthProviderFunc\";\nimport {Coordinates} from \"@/positioning/Coordinates\";\nimport {CodeRange} from \"@/parser/CodeRange\";\n\nlet storeInitiationTime: number = 0\nsetTimeout(function () {\n if(!storeInitiationTime) {\n console.warn('[vue-sequence] Store is a function and is not initiated in 1 second.')\n }\n}, 1000)\n\nexport interface Warning {\n title: string\n message: string\n}\n\nexport interface StoreState {\n warning: Warning | undefined\n code: string\n scale: number\n selected: any[]\n cursor: any\n showTips: boolean\n onElementClick: (codeRange: CodeRange) => void\n}\n\nconst Store = (debounceTime?: number) => {\n storeInitiationTime = now()\n return {\n state: {\n warning: undefined,\n code: '',\n theme: 'default',\n scale: 1,\n selected: [],\n cursor: null,\n showTips: false,\n onElementClick: (codeRange: CodeRange) => {\n console.log('Element clicked', codeRange)\n }\n } as StoreState,\n getters: {\n rootContext: (state: any) => {\n return RootContext(state.code)\n },\n title: (state: any, getters: any) => {\n return getters.rootContext?.title()?.content()\n },\n participants: (state: any, getters: any) => {\n return Participants(getters.rootContext, true)\n },\n coordinates: (state: any, getters: any) => {\n return new Coordinates(getters.rootContext, WidthProviderOnBrowser)\n },\n centerOf: (state: any, getters: any) => (entity: any) => {\n if (!entity) {\n console.error('[vue-sequence] centerOf: entity is undefined');\n return 0\n }\n try {\n return getters.coordinates.getPosition(entity) || 0\n } catch (e) {\n console.error(e)\n return 0\n }\n },\n GroupContext: () => GroupContext,\n ParticipantContext: () => ParticipantContext,\n cursor: (state: any) => state.cursor,\n // deprecated, use distances that returns centerOf(to) - centerOf(from)\n distance: (state: any, getters: any) => (from: any, to: any) => {\n return getters.centerOf(from) - getters.centerOf(to)\n },\n distance2: (state: any, getters: any) => (from: any, to: any) => {\n if (!from || !to) return 0\n return getters.centerOf(to) - getters.centerOf(from)\n },\n onElementClick: (state: any) => state.onElementClick\n },\n mutations: {\n code: function (state: any, payload: any) {\n state.code = payload;\n },\n setScale: function (state: any, payload: any) {\n state.scale = payload;\n },\n onSelect: function (state: any, payload: any) {\n if (state.selected.includes(payload)) {\n state.selected = state.selected.filter((p: any) => p !== payload)\n } else {\n state.selected.push(payload)\n }\n },\n cursor: function (state: any, payload: any) {\n state.cursor = payload;\n },\n },\n actions: {\n // Why debounce is here instead of mutation 'code'?\n // Both code and cursor must be mutated together, especially during typing.\n updateCode: debounce(function ({commit, getters}: any, payload: any) {\n if (typeof payload === 'string') {\n throw Error('You are using a old version of vue-sequence. New version requires {code, cursor}.')\n }\n commit('code', payload.code);\n }, debounceTime || 1000),\n },\n // TODO: Enable strict for development?\n strict: false,\n }\n};\nexport default Store\n","import colorString from 'color-string';\n\nexport function brightnessIgnoreAlpha(color: string): number {\n const c = colorString.get.rgb(color);\n // assuming alpha is always 1 (see removeAlpha in Participant.vue)\n let [r, g, b] = c;\n return ((r * 299) + (g * 587) + (b * 114)) / 1000;\n}\n\nexport function removeAlpha(color: string): string {\n const c = colorString.get.rgb(color);\n let [r, g, b] = c;\n return `rgb(${r}, ${g}, ${b})`;\n}\n","import pipe from \"ramda/src/pipe\";\nimport replace from \"ramda/src/replace\";\n\nconst removeChangeLines = replace(/[\\n\\r]/g, ' ');\nconst removeExtraSpaces = replace(/\\s+/g, ' ');\nconst removeSpaceBeforeAndAfterPunctuation = replace(/\\s*([,;.()])\\s*/g, '$1');\nconst removeTrailingSpace = replace(/\\s+$/g, '');\nconst removeLeadingAndEndingQuotes = replace(/^\"(.*)\"$/, '$1');\nexport const formatText = pipe(\n removeChangeLines,\n removeExtraSpaces,\n removeSpaceBeforeAndAfterPunctuation,\n removeTrailingSpace,\n removeLeadingAndEndingQuotes\n);\n","<template>\n <div class=\"block\">\n <div class=\"statement-container\" v-for=\"(stat, index) in statements\" :key=\"index\">\n <statement :context=\"stat\" :selfCallIndent=\"selfCallIndent\"/>\n </div>\n </div>\n</template>\n\n<script>\n import Statement from './Statement'\n\n export default {\n name: 'block',\n props: ['context', 'selfCallIndent'],\n computed: {\n statements: function () {\n return this.context?.stat()\n }\n },\n components: {\n Statement\n }\n }\n</script>\n\n","<template>\n <!-- TODO: 12px to align comment with async message, which as padding-left 10px and left 2px -->\n <div class=\"comments text-left\" style=\"padding-left: 12px\" v-html=\"markedComment\"></div>\n</template>\n\n<script type=\"text/babel\">\n import marked from 'marked'\n import highlightjs from 'highlight.js/lib/core'\n\n // Languages import\n import plaintext from 'highlight.js/lib/languages/plaintext'\n import javascript from 'highlight.js/lib/languages/javascript'\n import bash from 'highlight.js/lib/languages/bash'\n import yaml from 'highlight.js/lib/languages/yaml'\n\n // Register languages\n highlightjs.registerLanguage('plaintext', plaintext)\n highlightjs.registerLanguage('javascript', javascript)\n highlightjs.registerLanguage('bash', bash)\n highlightjs.registerLanguage('yaml', yaml)\n\n // Override function\n const renderer = {\n codespan(code) {\n const endpointPattern = /(GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)\\s+(.+)/ig\n // let found = code.match(endpointPattern)\n let found = endpointPattern.exec(code)\n if (found?.length === 3) {\n return `\n <code class=\"rest-api\">\n <span class=\"http-method-${found[1].toLowerCase()}\">${found[1]}</span>\n <span class=\"http-path\">${found[2]}</span>\n </code>\n `\n }\n return `<code>${code}</code>`\n }\n };\n\n marked.setOptions({\n highlight: function (code, language) {\n if (!language) {\n return highlightjs.highlightAuto(code).value\n }\n const validLanguage = highlightjs.getLanguage(language) ? language : 'plaintext'\n return highlightjs.highlight(validLanguage, code).value\n }\n })\n\n marked.use({ renderer });\n\n export default {\n name: 'comment',\n props: ['comment'],\n computed: {\n markedComment() {\n return marked(this.comment)\n }\n }\n }\n</script>\n\n","<template>\n <div v-show=\"debug\">\n <div class=\"flex flex-nowrap m-2 text-sm\">\n <div class=\"ml-4 text-xs inline-flex items-center font-bold leading-sm px-3 py-1 bg-green-200 text-green-700 rounded-sm\">\n <svg class=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\"></line><circle cx=\"18\" cy=\"6\" r=\"3\"></circle><circle cx=\"6\" cy=\"18\" r=\"3\"></circle><path d=\"M18 9a9 9 0 0 1-9 9\"></path></svg>\n <span class=\"inline-block px-2\">{{gitBranch}}:{{commitHash}}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nconst commitHash = process.env.VUE_APP_GIT_HASH;\nconst gitBranch = process.env.VUE_APP_GIT_BRANCH;\nexport default {\n name: \"Debug\",\n data() {\n return {\n commitHash,\n gitBranch,\n }\n },\n computed: {\n debug() {\n return !!localStorage.zenumlDebug;\n },\n },\n}\n</script>\n","<template>\n <!-- We have enabled important: \".zenuml\" for tailwind.\n 1. Don't use inline-block as class name here. Other clients may not have .zenuml at ancestor level.\n 2. .zenuml is used to make sure tailwind css takes effect.\n -->\n <div ref=\"export\" class=\"zenuml\" style=\"display: inline-block\" :class=\"theme\">\n <!-- pb-8 is to offset pt-8 in SeqDiagram component\n .whitespace-nowrap will be inherited by all children\n -->\n <debug />\n <div class=\"frame relative m-1 origin-top-left whitespace-nowrap\" :style=\"{transform: `scale(${scale})`}\">\n <div ref=\"content\">\n <div class=\"header flex justify-between\">\n <div class=\"left hide-export\">\n <slot></slot>\n </div>\n <div class=\"right flex-grow flex justify-between\">\n <diagram-title :context=\"title\"/>\n <privacy class=\"hide-export\" />\n </div>\n </div>\n <div>\n <div v-show=\"showTips\" class=\"fixed z-40 inset-0 overflow-y-auto\" aria-labelledby=\"modal-title\" role=\"dialog\" aria-modal=\"true\">\n <TipsDialog />\n </div>\n </div>\n <seq-diagram/>\n </div>\n <div class=\"footer mt-10 flex justify-between\">\n <button class=\"bottom-1 left-1 hide-export\" @click=\"showTipsDialog()\">\n <svg class=\"filter grayscale\" style=\"width: 1em; height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M514 912c-219.9 0-398.8-178.9-398.8-398.9 0-219.9 178.9-398.8 398.8-398.8s398.9 178.9 398.9 398.8c-0.1 220-179 398.9-398.9 398.9z m0-701.5c-166.9 0-302.7 135.8-302.7 302.7S347.1 815.9 514 815.9s302.7-135.8 302.7-302.7S680.9 210.5 514 210.5z\" fill=\"#BDD2EF\" /><path d=\"M431.1 502.4c-0.1 0.3 0.3 0.4 0.4 0.2 6.9-11.7 56.5-89.1 23.4 167.3-17.4 134.7 122.9 153.6 142.3-7.9 0.1-1-1.3-1.4-1.7-0.4-11.9 37.2-49.6 104.9-4.7-155.2 18.6-107.2-127.6-146-159.7-4z\" fill=\"#2867CE\" /><path d=\"M541.3 328m-68 0a68 68 0 1 0 136 0 68 68 0 1 0-136 0Z\" fill=\"#2867CE\" /></svg>\n </button>\n <div class=\"zoom-controls flex justify-between w-28 bg-blue-100 hide-export\" :style=\"{transform: `scale(${1/scale})`}\">\n <button class=\"zoom-in px-1\" @click=\"zoomIn()\">+</button>\n <label>{{Number(scale * 100).toFixed(0)}} %</label>\n <button class=\"zoom-out px-1\" @click=\"zoomOut()\">-</button>\n </div>\n <width-provider/>\n <a target=\"_blank\" href=\"https://zenuml.com\" class=\"absolute bottom-1 right-1 text-xs\">ZenUML.com</a>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport {mapState, mapGetters, mapMutations} from \"vuex\";\nimport Privacy from \"@/components/privacy/Privacy.vue\";\nimport DiagramTitle from \"@/components/DiagramTitle\";\nimport SeqDiagram from \"@/components/SeqDiagram\";\nimport TipsDialog from \"@/components/tutorial/TipsDialog\";\nimport WidthProvider from \"@/components/positioning/WidthProvider\";\nimport * as htmlToImage from 'html-to-image'\nimport Debug from \"@/components/Debug/Debug\";\n\nexport default {\n name: \"DiagramFrame\",\n computed: {\n ...mapState(['showTips', 'scale', 'theme']),\n ...mapGetters(['rootContext']),\n title() {\n if(!this.rootContext) {\n console.error('`rootContext` is empty. Please make sure `store` is properly configured.')\n }\n return this.rootContext?.title()\n },\n },\n methods: {\n ...mapMutations(['setScale',]),\n showTipsDialog() {\n this.$store.state.showTips = true;\n\n try {\n this.$gtag?.event('view', {\n 'event_category': 'help', 'event_label': 'tips dialog'\n })\n } catch (e) {\n console.error(e)\n }\n },\n toPng() {\n return htmlToImage.toPng(this.$refs['export'], {\n backgroundColor: 'white',\n filter: (node) => {\n return !node?.classList?.contains('hide-export')\n }\n })\n },\n toSvg() {\n return htmlToImage.toSvg(this.$refs['export'], {\n backgroundColor: 'white',\n filter: (node) => {\n return !node?.classList?.contains('hide-export')\n }\n })\n },\n toBlob() {\n return htmlToImage.toBlob(this.$refs['export'], {\n backgroundColor: 'white',\n filter: (node) => {\n return !node?.classList?.contains('hide-export')\n }\n })\n },\n toJpeg() {\n // It does not render the 'User' svg icon.\n return htmlToImage.toJpeg(this.$refs['export'], {\n backgroundColor: 'white',\n filter: (node) => {\n return !node?.classList?.contains('hide-export')\n }\n })\n },\n zoomIn() {\n this.setScale(this.scale + 0.1)\n },\n zoomOut() {\n this.setScale(this.scale - 0.1)\n },\n setTheme(theme) {\n this.theme = theme\n },\n setStyle(style) {\n const styleElementId = 'zenuml-style';\n // check if style element exists\n let styleElement = document.getElementById(styleElementId);\n if (!styleElement) {\n // create a style element and inject the content as textContent\n styleElement = document.createElement('style')\n // give the element a unique id\n styleElement.id = styleElementId\n document.head.append(styleElement)\n }\n styleElement.textContent = style\n },\n setRemoteCss(url) {\n // if url is from github, we fetch the raw content and set the style\n // if url contains github.com or githubusercontent.com, we fetch the raw content and set the style\n if (url.includes('github.com') || url.includes('githubusercontent.com')) {\n fetch(url.replace('github.com', 'raw.githubusercontent.com').replace('blob/', ''))\n .then(response => response.text())\n .then(text => {\n this.setStyle(text)\n console.log('set remote css from github', text)\n })\n return;\n }\n if (url.includes('github.com') || url.includes('githubusercontent.com')) {\n const rawUrl = url.replace('github.com', 'raw.githubusercontent.com').replace('/blob', '')\n fetch(rawUrl)\n .then(response => response.text())\n .then(text => this.setStyle(text))\n return;\n }\n console.log('setRemoteCss', url)\n const remoteCssUrlId = 'zenuml-remote-css';\n // check if remote css element exists\n let remoteCssElement = document.getElementById(remoteCssUrlId);\n if (!remoteCssElement) {\n // create a style element and inject the content as textContent\n remoteCssElement = document.createElement('link')\n // give the element a unique id\n remoteCssElement.id = remoteCssUrlId\n remoteCssElement.rel = 'stylesheet'\n document.head.append(remoteCssElement)\n }\n remoteCssElement.href = url\n }\n },\n components: {\n Debug,\n WidthProvider,\n TipsDialog,\n DiagramTitle,\n SeqDiagram,\n Privacy,\n },\n}\n</script>\n\n<style scoped>\n.frame {\n display: inline-block;\n border: #E6E6E6 1px solid;\n border-radius: 3px;\n}\n.header {\n border-bottom: #E6E6E6 1px solid;\n margin-bottom: 4px;\n padding: 4px;\n}\n\n\n</style>\n","<template>\n <div class=\"diagram-title\">{{title}}</div>\n</template>\n\n<script>\nexport default {\n name: 'DiagramTitle',\n props: ['context'],\n computed: {\n title: function () {\n return this.context?.content()\n }\n }\n}\n</script>\n\n<style scoped>\n</style>\n","<template>\n <div class=\"divider\" :style=\"{width: width + 'px', transform: 'translateX(' + ((-1) * centerOfFrom + 10) + 'px)'}\">\n <div class=\"left\"></div>\n <div class=\"name\">{{name}}</div>\n <div class=\"right\"></div>\n </div>\n</template>\n\n<script>\n import {mapGetters} from \"vuex\";\n\n export default {\n name: 'divider',\n props: ['context'],\n computed: {\n ...mapGetters(['participants', 'centerOf']),\n /* Dividers have the same width as the lifeline layer */\n width() {\n let rearParticipant = this.participants.Names().pop()\n // 20px for the right margin of the participant\n return this.centerOf(rearParticipant) + 10\n },\n from: function() {\n return this.context.Origin()\n },\n centerOfFrom() {\n return this.centerOf(this.from)\n },\n name: function () {\n return this.context.divider().name().getFormattedText()\n }\n }\n }\n</script>\n\n<style scoped>\n.divider {\n display: flex;\n align-items: center;\n}\n.name {\n margin: 0;\n padding: 2px 6px 2px 6px;\n}\n.left, .right {\n height: 1px;\n flex-grow: 1;\n}\n</style>\n","<template>\n <div class=\"fragment alt\" :style=\"fragmentStyle\">\n <div class=\"segment\">\n <comment v-if=\"comment\" :comment=\"comment\"/>\n\n <div class=\"header\">\n <div class=\"name\"><label>Alt</label></div>\n <label class=\"condition\">[{{condition}}]</label>\n </div>\n <block v-if=\"blockInIfBlock\"\n :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"blockInIfBlock\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n <template v-for=\"(elseIfBlock, index) in alt.elseIfBlock()\">\n <div class=\"segment mt-2 border-t border-solid\" :key=\"index+500\">\n <div class=\"header\" :key=\"index+1000\">\n <label class=\"else-if\">else if</label>\n <label class=\"condition\">[{{conditionFromIfElseBlock(elseIfBlock)}}]</label>\n </div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"blockInElseIfBlock(elseIfBlock)\"\n\n :selfCallIndent=\"selfCallIndent\"\n :key=\"index+2000\"></block>\n </div>\n </template>\n <template v-if=\"elseBlock\">\n <div class=\"segment mt-2 border-t border-solid\">\n <div class=\"header\"><label>[else]</label></div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"elseBlock\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n </template>\n </div>\n</template>\n\n<script>\n import fragment from './FragmentMixin'\n\n export default {\n name: 'fragment-alt',\n props: ['context', 'comment', 'selfCallIndent'],\n mixins: [fragment],\n computed: {\n from: function() {\n return this.context.Origin()\n },\n alt: function () {\n return this.context.alt()\n },\n blockInIfBlock: function () {\n return this.alt?.ifBlock()?.braceBlock()?.block()\n },\n condition: function () {\n return this.conditionFromIfElseBlock(this.alt?.ifBlock())\n },\n elseBlock: function () {\n return this.alt?.elseBlock()?.braceBlock()?.block()\n }\n },\n methods: {\n conditionFromIfElseBlock(ctx) {\n return ctx?.parExpr()?.condition()?.getFormattedText()\n },\n blockInElseIfBlock(ctx) {\n return ctx?.braceBlock()?.block()\n }\n },\n beforeCreate: function () {\n this.$options.components.Block = require('./Block.vue').default\n this.$options.components.Comment = require('./Comment.vue').default\n }\n }\n</script>\n\n","<template>\n <div class=\"fragment loop\" :style=\"fragmentStyle\">\n <comment v-if=\"comment\" :comment=\"comment\" />\n <div class=\"header\">\n <div class=\"name\"><label>Loop</label></div>\n <label class=\"condition\">[{{condition}}]</label>\n </div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"blockInLoop\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n</template>\n\n<script>\n import fragment from './FragmentMixin'\n\n export default {\n name: 'fragment-loop',\n props: ['context', 'comment', 'selfCallIndent'],\n mixins: [fragment],\n computed: {\n from: function() {\n return this.context.Origin()\n },\n loop: function () {\n return this.context.loop()\n },\n blockInLoop: function () {\n return this.loop?.braceBlock()?.block()\n },\n condition: function () {\n return this.loop?.parExpr()?.condition()?.getFormattedText()\n }\n },\n beforeCreate: function () {\n this.$options.components.Block = require('./Block.vue').default\n this.$options.components.Comment = require('./Comment.vue').default\n }\n }\n</script>\n","<template>\n <div class=\"fragment opt\" :style=\"fragmentStyle\">\n <comment v-if=\"comment\" :comment=\"comment\" />\n <div class=\"header\">\n <div class=\"name\"><label>Opt</label></div>\n </div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"opt.braceBlock().block()\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n</template>\n\n<script>\n import fragment from './FragmentMixin'\n\n export default {\n name: 'fragment-opt',\n props: ['context', 'comment', 'selfCallIndent'],\n mixins: [fragment],\n computed: {\n from: function() {\n return this.context.Origin()\n },\n opt: function () {\n return this.context.opt()\n }\n },\n beforeCreate: function () {\n this.$options.components.Block = require('./Block.vue').default\n this.$options.components.Comment = require('./Comment.vue').default\n }\n }\n</script>\n","<template>\n <div class=\"fragment par\" :style=\"fragmentStyle\">\n <comment v-if=\"comment\" :comment=\"comment\" />\n <div class=\"header\">\n <div class=\"name\"><label>Par</label></div>\n </div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"par.braceBlock().block()\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n</template>\n\n<script>\n import fragment from './FragmentMixin'\n\n export default {\n name: 'fragment-par',\n props: ['context', 'comment', 'selfCallIndent'],\n mixins: [fragment],\n computed: {\n from: function() {\n return this.context.Origin()\n },\n par: function () {\n return this.context.par()\n }\n },\n beforeCreate: function () {\n this.$options.components.Block = require('./Block.vue').default\n this.$options.components.Comment = require('./Comment.vue').default\n }\n }\n</script>\n<style>\n .fragment.par>.block>.statement-container:not(:first-child) {\n border-top: 1px dashed;\n }\n</style>\n","<template>\n <div class=\"fragment tcf\" :style=\"fragmentStyle\">\n <div class=\"segment\">\n <comment v-if=\"comment\" :comment=\"comment\"/>\n\n <div class=\"header\">\n <div class=\"name\"><label>Try</label></div>\n </div>\n<!-- fragment-offset set as offsetX - 1 for fragment border -->\n <block v-if=\"blockInTryBlock\"\n :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"blockInTryBlock\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n <template v-for=\"(catchBlock, index) in tcf.catchBlock()\">\n <div class=\"segment mt-2 border-t border-solid\" :key=\"index+500\">\n <div class=\"header\" :key=\"index+1000\">\n <label class=\"keyword catch\">catch</label><label class=\"exception\">{{exception(catchBlock) }}</label>\n </div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"blockInCatchBlock(catchBlock)\"\n :selfCallIndent=\"selfCallIndent\"\n :key=\"index+2000\"></block>\n </div>\n </template>\n <template v-if=\"finallyBlock\">\n <div class=\"segment mt-2 border-t border-solid\">\n <div class=\"header finally\"><div><label class=\"keyword finally\">finally</label></div></div>\n <block :style=\"{paddingLeft: `${offsetX}px`}\"\n :context=\"finallyBlock\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n </template>\n </div>\n</template>\n\n<script>\n import fragment from './FragmentMixin'\n\n export default {\n name: 'fragment-tcf',\n props: ['context', 'comment', 'selfCallIndent'],\n mixins: [fragment],\n computed: {\n from: function() {\n return this.context.Origin()\n },\n tcf: function () {\n return this.context.tcf()\n },\n blockInTryBlock: function () {\n return this.tcf?.tryBlock()?.braceBlock()?.block()\n },\n finallyBlock: function () {\n return this.tcf?.finallyBlock()?.braceBlock()?.block()\n }\n },\n methods: {\n exception(ctx) {\n return ctx?.invocation()?.parameters().getText()\n },\n blockInCatchBlock(ctx) {\n return ctx?.braceBlock()?.block()\n }\n },\n beforeCreate: function () {\n this.$options.components.Block = require('./Block.vue').default\n this.$options.components.Comment = require('./Comment.vue').default\n }\n }\n</script>\n\n","<template>\n <div class=\"interaction async\"\n v-on:click.stop=\"onClick\"\n :data-signature=\"signature\"\n :class=\"{ 'right-to-left':rightToLeft, 'highlight': isCurrent }\"\n :style=\"{width: interactionWidth + 'px', transform: 'translateX(' + translateX + 'px)'}\">\n <comment v-if=\"comment\" :comment=\"comment\"/>\n <component v-bind:is=\"invocation\"\n :content=\"signature\"\n :rtl=\"rightToLeft\"\n type=\"async\" />\n <div class=\"invisible-occurrence\"></div>\n </div>\n</template>\n\n<script type=\"text/babel\">\n import Comment from './Comment.vue'\n import SelfInvocationAsync from './SelfInvocation-async'\n import Message from './Message'\n import {mapGetters} from \"vuex\"\n import {CodeRange} from '@/parser/CodeRange'\n\n function isNullOrUndefined(value) {\n return value === null || value === undefined\n }\n\n export default {\n name: 'interaction-async',\n props: ['context', 'comment', 'selfCallIndent'],\n computed: {\n ...mapGetters(['distance', 'cursor', 'onElementClick']),\n from: function() {\n return this.context.Origin()\n },\n asyncMessage: function () {\n return this.context?.asyncMessage()\n },\n interactionWidth: function () {\n if (this.isSelf) {\n const leftOfMessage = 100\n const averageWidthOfChar = 10\n return averageWidthOfChar * (this.signature?.length || 0) + leftOfMessage\n }\n return Math.abs(this.distance(this.target, this.source))\n },\n // Both 'left' and 'translateX' can be used to move the element horizontally.\n // Change it to use translate according to https://stackoverflow.com/a/53892597/529187.\n translateX: function () {\n return this.rightToLeft ? this.distance(this.target, this.from) : this.distance(this.source, this.from)\n },\n rightToLeft: function () {\n return this.distance(this.target, this.source) < 0\n },\n signature: function () {\n return this.asyncMessage?.content()?.getFormattedText()\n },\n source: function () {\n return this.asyncMessage?.from()?.getFormattedText() || this.from\n },\n target: function () {\n return this.asyncMessage?.to()?.getFormattedText()\n },\n isCurrent: function () {\n const start = this.asyncMessage.start.start\n const stop = this.asyncMessage.stop.stop + 1\n if (isNullOrUndefined(this.cursor) || isNullOrUndefined(start) || isNullOrUndefined(stop)) return false\n return this.cursor >= start && this.cursor <= stop\n },\n isSelf: function () {\n return this.source === this.target\n },\n invocation: function () {\n return this.isSelf ? 'SelfInvocationAsync' : 'Message'\n }\n },\n methods: {\n onClick() {\n this.onElementClick(CodeRange.from(this.context))\n },\n },\n components: {\n Comment,\n SelfInvocationAsync,\n Message\n }\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n .interaction .invisible-occurrence {\n height: 20px;\n }\n\n .interaction.async >>> .message {\n width: 100%;\n }\n</style>\n","<template>\n <div class=\"message border-b-2 flex items-end\"\n :class=\"{ 'flex-row-reverse': rtl,\n 'return': type === 'return',\n 'right-to-left':rtl, 'text-left': isAsync, 'text-center': !isAsync }\"\n :style=\"{'border-bottom-style': borderStyle}\">\n <div class=\"name flex-grow truncate hover:whitespace-normal hover:bg-yellow-300\"\n style=\"padding-left: 10px; float: left\">{{content}}</div>\n <point class=\"flex-shrink-0 transform translate-y-1/2 -my-px\" :fill=\"fill\" :rtl=\"rtl\"/>\n </div>\n</template>\n\n<script type=\"text/babel\">\n import Point from './Point'\n\n // An asynchronous Message (messageSort equals asynchCall or asynchSignal) has an open arrow head.\n // A synchronous Message (messageSort equals synchCall) has a filled arrow head.\n // A reply Message (messageSort equals reply) has a dashed line with either an open or filled arrow head.\n // An object creation Message (messageSort equals createMessage) has a dashed line with an open arrow head.\n export default {\n name: 'message',\n props: ['content', 'rtl', 'type'],\n computed: {\n isAsync: function () {\n return this.type === 'async'\n },\n borderStyle () {\n switch (this.type) {\n case 'sync':\n case 'async':\n return 'solid'\n case 'creation':\n case 'return':\n return 'dashed'\n }\n return ''\n },\n fill () {\n switch (this.type) {\n case 'sync':\n case 'async':\n return true\n case 'creation':\n case 'return':\n return false\n }\n return false\n }\n },\n components: {\n Point\n }\n }\n</script>\n","<template>\n <!-- pr-24 to give space for the right most participant.\n TODO: we may need to consider the width of self message on right most participant. -->\n <div class=\"message-layer pt-24 pb-1\">\n <block :context=\"context\" :style=\"{'padding-left': paddingLeft + 'px'}\"/>\n </div>\n</template>\n\n<script>\nimport {mapGetters, mapMutations} from 'vuex'\n import Block from './Block'\n\n export default {\n name: 'message-layer',\n props: ['context'],\n data() {\n return {\n left: 0,\n right: 0,\n totalWidth: 0\n }\n },\n computed: {\n ...mapGetters(['participants', 'centerOf']),\n paddingLeft() {\n if (this.participants.Array().length >= 1) {\n const first = this.participants.Array().slice(0)[0].name;\n return this.centerOf(first);\n }\n return 0;\n }\n },\n methods: {\n ...mapMutations(['onMessageLayerMountedOrUpdated']),\n\n participantNames() {\n // According to the doc, computed properties are cached.\n return this.participants.Names()\n },\n },\n components: {\n Block\n }\n }\n</script>\n\n<style>\n /* Avoid moving interaction to the left or right with margins.\n We can always assume that an interaction's border is the lifeline.\n Moving content with padding is OK.\n Don't move this to the Interaction component. This is also used by Interaction-async\n */\n .interaction {\n /*Keep dashed or solid here otherwise no space is given to the border*/\n border: dashed transparent;\n /* This border width configuration make sure the content width is\n the same as from the source occurrence's right border to target\n occurrence's left boarder (boarder not inclusive).*/\n border-width: 0 7px;\n }\n\n .interaction:hover {\n cursor: pointer;\n }\n\n .message {\n position: relative; /* positioning Point */\n }\n\n .message>.name {\n font-size: 13px;\n text-align: center;\n }\n\n .interaction.right-to-left > .occurrence {\n /* InteractionBorderWidth + (OccurrenceWidth-1)/2 */\n left: -14px; /* overlay occurrence bar on the existing bar. */\n }\n\n .interaction.self > .occurrence {\n /* width of InteractionBorderWidth 7px + lifeline center 1px */\n left: -8px; /* overlay occurrence bar on the existing bar. */\n margin-top: -10px;\n }\n\n .fragment {\n border-width: 1px;\n margin: 8px 0 0 0;\n padding-bottom: 10px;\n }\n\n .fragment .header label {\n padding: 0 10px;\n }\n .fragment .header .name label {\n padding: 0 10px;\n background: rgba(170, 170, 170, 0.1);\n }\n</style>\n","<template>\n <div class=\"occurrence border-2 relative left-full\" :class=\"{'right-to-left': rtl}\" data-el-type=\"occurrence\" :data-belongs-to=\"participant\" :data-x-offset=\"center\" :data-debug-center-of=\"computedCenter\">\n <block v-if=\"this.context.braceBlock()\"\n :context=\"context.braceBlock().block()\"\n :selfCallIndent=\"selfCallIndent\"\n ></block>\n </div>\n</template>\n\n<script type=\"text/babel\">\nimport {mapState, mapGetters} from 'vuex'\n\n export default {\n name: 'occurrence',\n props: ['context', 'selfCallIndent', 'participant', 'rtl'],\n data: function () {\n return {\n center: 0,\n }\n },\n computed: {\n ...mapGetters(['centerOf', 'messageLayerLeft']),\n ...mapState(['code']),\n computedCenter: function () {\n try {\n return this.centerOf(this.participant)\n } catch (e) {\n console.error(e)\n return 0\n }\n },\n },\n components: {\n Block: () => import('./Block')\n },\n }\n</script>\n\n<style scoped>\n\n .occurrence {\n width: 15px;\n /* 5 = (OccurrenceWidth(15)-1)/2 - OccurrenceBorderWidth(2)*/\n padding: 16px 0 16px 5px;\n }\n\n\n >>> >.statement-container:last-child>.interaction.return:last-of-type {\n margin-bottom: 0;\n border-bottom: 0;\n transform: translateY(1px);\n }\n\n >>> >.statement-container:last-child>.interaction.return:last-of-type>.message {\n bottom: -17px; /* Move the absolutely positioned return message to the bottom. -17 to offset the padding of Occurrence. */\n height: 0;\n }\n\n .right-to-left.occurrence {\n left: -14px;\n }\n</style>\n\n<style>\n .occurrence {\n margin-top: -2px; /* To offset Message's border-bottom width */\n }\n</style>\n","<template>\n <div class=\"point\" :class=\"{ 'fill': fill, 'no-fill': !fill, 'right-to-left':rtl }\">\n <svg v-if=\"!rtl\" class=\"arrow\" height=\"10\" width=\"10\">\n <polyline class=\"right head\" points=\"0,0 10,5 0,10\"></polyline>\n </svg>\n <svg v-if=\"rtl\" class=\"arrow\" height=\"10\" width=\"10\">\n <polyline class=\"left head\" points=\"10,0 0,5 10,10\"></polyline>\n </svg>\n </div>\n</template>\n\n<script type=\"text/babel\">\n export default {\n name: 'point',\n props: ['fill', 'rtl']\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n .point {\n /*position:absolute;*/\n /*margin-top: -12px;*/\n /*right: 10px;*/\n }\n\n .fill svg.arrow polyline {\n fill: #000;\n }\n\n .no-fill svg.arrow polyline {\n fill: none !important;\n }\n\n .async>.message>.point>svg.arrow> polyline {\n fill: none;\n }\n\n .right-to-left.point {\n left: 0;\n right: auto;\n }\n .right-to-left.point>svg>polyline.right {\n display: none;\n }\n\n .right-to-left.point>svg>polyline.left {\n display: inline;\n }\n\n .point>svg>polyline.left {\n display: none;\n }\n</style>\n","<template>\n <!-- .relative to allow left style -->\n <div class=\"interaction return relative\"\n v-on:click.stop=\"onClick\"\n :data-signature=\"signature\"\n :class=\"{ 'right-to-left':rightToLeft, 'highlight': isCurrent }\"\n :style=\"{width: width + 'px', left: left + 'px'}\">\n <comment v-if=\"comment\" :comment=\"comment\"/>\n <div v-if=\"isSelf\" class=\"flex items-center\">\n <svg class=\"w-3 h-3 flex-shrink-0\" viewBox=\"0 0 512 512\"><path class=\"cls-1\" d=\"M256 0C114.84 0 0 114.84 0 256s114.84 256 256 256 256-114.84 256-256S397.16 0 256 0Zm0 469.33c-117.63 0-213.33-95.7-213.33-213.33S138.37 42.67 256 42.67 469.33 138.37 469.33 256 373.63 469.33 256 469.33Z\"/><path class=\"cls-1\" d=\"M288 192h-87.16l27.58-27.58a21.33 21.33 0 1 0-30.17-30.17l-64 64a21.33 21.33 0 0 0 0 30.17l64 64a21.33 21.33 0 0 0 30.17-30.17l-27.58-27.58H288a53.33 53.33 0 0 1 0 106.67h-32a21.33 21.33 0 0 0 0 42.66h32a96 96 0 0 0 0-192Z\"/></svg>\n <span>{{signature}}</span>\n </div>\n <Message v-if=\"!isSelf\"\n :content=\"signature\"\n :rtl=\"rightToLeft\"\n type=\"return\" />\n </div>\n</template>\n\n<script type=\"text/babel\">\n // Return is defined with `RETURN expr? SCOL?` or `ANNOTATION_RET asyncMessage EVENT_END?`.\n // It is rare that you need the latter format. Probably only when you have two consecutive returns.\n import Comment from './Comment.vue'\n import Message from './Message'\n import {mapGetters} from \"vuex\";\n import {CodeRange} from '@/parser/CodeRange'\n import WidthProviderOnBrowser from \"@/positioning/WidthProviderFunc\";\n import {TextType} from \"@/positioning/Coordinate\";\n export default {\n name: 'return',\n props: ['context', 'comment'],\n computed: {\n ...mapGetters(['distance', 'cursor', 'onElementClick']),\n from: function() {\n return this.context.Origin()\n },\n asyncMessage: function () {\n return this.context?.ret().asyncMessage()\n },\n width: function () {\n return this.isSelf? WidthProviderOnBrowser(this.signature, TextType.MessageContent) : Math.abs(this.distance(this.target, this.source))\n },\n left: function () {\n return this.rightToLeft ? (this.distance(this.target, this.from) + 2): (this.distance(this.source, this.from) + 2)\n },\n rightToLeft: function () {\n return this.distance(this.target, this.source) < 0\n },\n signature: function () {\n return this.asyncMessage?.content()?.getFormattedText() || this.context?.ret()?.expr()?.getFormattedText()\n },\n source: function () {\n return this.asyncMessage?.from()?.getFormattedText() || this.from\n },\n target: function () {\n return this.asyncMessage?.to()?.getFormattedText() || this.context?.ret()?.ReturnTo()\n },\n isCurrent: function () {\n return false\n },\n isSelf: function () {\n return this.source === this.target\n },\n },\n methods: {\n onClick() {\n this.onElementClick(CodeRange.from(this.context))\n },\n },\n components: {\n Comment,\n Message\n }\n }\n</script>\n","<template>\n <!-- style border-width means not to be overridden. -->\n <div class=\"message self flex items-start\" style=\"border-width: 0\">\n <svg class=\"arrow\" width=\"34\" height=\"34\">\n <polyline points=\"0,2 28,2 28,25 1,25\"></polyline>\n <polyline class=\"head\" points=\"11,19 1,25 11,31\"></polyline>\n <!--TODO: What is the below line used for?-->\n <!--<polyline class=\"closed\" points=\"28,32 28,18\"></polyline>-->\n </svg>\n <label class=\"name hover:bg-yellow-300\"><span v-if=\"assignee\">{{assignee}} = </span> <span v-if=\"type === 'return'\">return</span> {{content}}</label>\n </div>\n</template>\n\n<script type=\"text/babel\">\n export default {\n name: 'self-invocation-async',\n props: ['content', 'assignee', 'type']\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n .message.self {\n /* InteractionBorderWidth */\n transform: translateX(-5px);\n }\n\n .message.self svg.arrow polyline {\n fill: none;\n stroke-width: 2px;\n }\n .message.self svg.arrow polyline.head {\n fill: none;\n }\n\n</style>\n","<template>\n <!-- style border-width means not to be overridden. -->\n <div class=\"message self flex items-start\" style=\"border-width: 0\">\n <svg class=\"arrow\" width=\"30\" height=\"24\">\n <polyline points=\"0,2 28,2 28,15 14,15\"></polyline>\n <polyline class=\"head\" points=\"18,9 8,15 18,21\"></polyline>\n <!--TODO: What is the below line used for?-->\n <!--<polyline class=\"closed\" points=\"28,32 28,18\"></polyline>-->\n </svg>\n <label class=\"name hover:bg-yellow-300\"><span v-if=\"assignee\">{{assignee}} = </span> {{content}}</label>\n </div>\n</template>\n\n<script type=\"text/babel\">\n export default {\n name: 'self-invocation',\n props: ['content', 'assignee']\n }\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n svg polyline {\n fill: none;\n stroke-width: 2px;\n }\n</style>\n","<template>\n <div class=\"sequence-diagram overflow-visible mr-2\" :style=\"{width: `${width}px`, paddingLeft: `${paddingLeft}px`}\" ref=\"diagram\" >\n <life-line-layer :context=\"rootContext.head()\"/>\n <message-layer :context=\"rootContext.block()\"/>\n </div>\n</template>\n\n<script>\n import LifeLineLayer from './lifeline/LifeLineLayer.vue'\n import MessageLayer from './MessageLayer.vue'\n import {mapGetters} from 'vuex'\n import {Depth} from \"@/parser\";\n import {FRAGMENT_LEFT_BASE_OFFSET, FRAGMENT_RIGHT_BASE_OFFSET} from \"@/components/FragmentMixin\";\n\n export default {\n name: 'seq-diagram',\n components: {\n LifeLineLayer,\n MessageLayer\n },\n computed: {\n ...mapGetters(['rootContext', 'coordinates']),\n width() {\n return this.coordinates.getWidth() + 10 * (this.depth + 1) + FRAGMENT_RIGHT_BASE_OFFSET;\n },\n depth: function () {\n return Depth(this.rootContext)\n },\n paddingLeft: function () {\n return 10 * (this.depth + 1) + FRAGMENT_LEFT_BASE_OFFSET\n },\n },\n }\n</script>\n\n<style>\n .sequence-diagram * {\n box-sizing: inherit;\n }\n\n .sequence-diagram {\n position: relative; /* Make sure its descendants can be positioned */\n box-sizing: border-box; /* Reset box-sizing for the diagram */\n line-height: normal; /* Reset line-height for the diagram */\n text-align: left;\n }\n\n /* .participant is shared by MessageLayer and LifeLineLayer */\n .participant {\n border-width: 2px; /* don't put it in cosmetic or theme css */\n padding: 8px 4px;\n min-width: 88px;\n max-width: 250px;\n text-align: center;\n }\n</style>\n","<template>\n <component v-bind:is=\"subStatement\"\n :context=\"context\"\n :comment=\"comment\"\n :selfCallIndent=\"selfCallIndent\"></component>\n</template>\n\n<script>\n import Creation from './creation/Creation.vue'\n import Interaction from './interaction/Interaction.vue'\n import InteractionAsync from './Interaction-async.vue'\n import FragmentAlt from './FragmentAlt.vue'\n import FragmentPar from './FragmentPar.vue'\n import FragmentLoop from './FragmentLoop.vue'\n import FragmentOpt from './FragmentOpt.vue'\n import FragmentTryCatchFinally from \"./FragmentTryCatchFinally\"\n import Return from './Return.vue'\n import Divider from './Divider.vue'\n\n export default {\n name: 'statement',\n props: ['context', 'selfCallIndent'],\n computed: {\n comment: function () {\n return this.context.getComment() ? this.context.getComment() : ''\n },\n subStatement: function () {\n let that = this\n let dict = {\n loop: 'FragmentLoop',\n alt: 'FragmentAlt',\n par: 'FragmentPar',\n opt: 'FragmentOpt',\n tcf: 'FragmentTryCatchFinally',\n creation: 'Creation',\n message: 'Interaction',\n asyncMessage: 'InteractionAsync',\n divider: 'Divider',\n ret: 'Return'\n }\n let key = Object.keys(dict).find(x => that.context[x]() !== null)\n return dict[key]\n }\n },\n components: {\n Creation,\n Interaction,\n InteractionAsync,\n FragmentAlt,\n FragmentPar,\n FragmentOpt,\n FragmentTryCatchFinally,\n FragmentLoop,\n Divider,\n Return\n }\n }\n</script>\n<style>\n .comments {\n font-size: 0.8em;\n line-height: 1.5em;\n opacity: 0.5;\n }\n\n .comments:hover {\n opacity: 0.9;\n }\n\n .fragment>.comments {\n width: 100%;\n border-bottom: solid 1px;\n border-top: none;\n border-left: none;\n border-right: none;\n }\n</style>\n","<template>\n <div class=\"interaction creation sync text-center transform\"\n v-on:click.stop=\"onClick\"\n :data-signature=\"signature\"\n :class=\"{ 'right-to-left':rightToLeft, '-translate-x-full': rightToLeft, 'highlight': isCurrent }\"\n :style=\"{width: interactionWidth + 'px'}\">\n <comment v-if=\"comment\" :comment=\"comment\" />\n <!-- flex items-center is an idiom that vertically align items left and right.\n h-10 fixes the height as the same as participant boxes.-->\n <div ref=\"messageContainer\" class=\"message-container flex items-center h-10\"\n data-type=\"creation\" :data-to=\"to\"\n :class=\"{ 'flex-row-reverse': rightToLeft}\">\n <message ref=\"messageEl\"\n class=\"invocation w-full transform -translate-y-1/2\" :content=\"signature\" :rtl=\"rightToLeft\" type=\"creation\"/>\n <!-- TODO: replace the following with a participant component. -->\n <div ref=\"participantPlaceHolder\"\n class=\"participant invisible right-0 flex flex-col justify-center flex-shrink-0\">\n <!-- Put in a div to give it a fixed height, because stereotype is dynamic. -->\n <div class=\"h-5 flex flex-col justify-center\">\n <label class=\"name\">{{ to }}</label>\n </div>\n </div>\n </div>\n <occurrence :context=\"creation\" :participant=\"to\"/>\n <message class=\"return transform -translate-y-full\" v-if=\"assignee\" :content=\"assignee\" :rtl=\"!rightToLeft\" type=\"return\"/>\n </div>\n</template>\n\n<script type=\"text/babel\">\n import parentLogger from '../../logger/logger'\n\n import {mapGetters} from 'vuex'\n import Comment from '../Comment.vue'\n import Message from '../Message.vue'\n import Occurrence from '../Occurrence.vue'\n import {CodeRange} from '@/parser/CodeRange'\n\n const logger = parentLogger.child({component: 'Creation'})\n\n export default {\n name: 'creation',\n props: ['context', 'comment', 'selfCallIndent'],\n computed: {\n ...mapGetters(['cursor', 'onElementClick', 'distance']),\n from() {\n return this.context.Origin()\n },\n creation() {\n return this.context.creation()\n },\n interactionWidth() {\n let distance = Math.abs(this.distance(this.to, this.from))\n let safeOffset = this.selfCallIndent || 0\n return distance + (this.rightToLeft ? safeOffset : (-safeOffset));\n },\n rightToLeft () {\n return this.distance(this.to, this.from) < 0\n },\n signature() {\n return this.creation.SignatureText()\n },\n assignee () {\n function safeCodeGetter (context) {\n return (context && context.getFormattedText()) || ''\n }\n let assignment = this.creation.creationBody().assignment()\n if (!assignment) return ''\n let assignee = safeCodeGetter(assignment.assignee())\n const type = safeCodeGetter(assignment.type())\n return assignee + (type ? ':' + type : '')\n },\n to() {\n return this.creation.Owner()\n },\n isCurrent() {\n return this.creation.isCurrent(this.cursor)\n }\n },\n mounted() {\n this.layoutMessageContainer()\n logger.debug(`mounted for ${this.to}`);\n },\n updated() {\n this.layoutMessageContainer()\n logger.debug(`mounted for ${this.to}`);\n },\n methods: {\n layoutMessageContainer() {\n let _layoutMessageContainer = () => {\n if (!this.$refs.participantPlaceHolder || !this.$refs.messageContainer) return\n const halfWidthOfPlaceholder = this.$refs['participantPlaceHolder'].offsetWidth / 2;\n ((this.$refs['messageContainer'])).style.width = `calc(100% + ${halfWidthOfPlaceholder + 6}px`;\n if(this.rightToLeft) {\n ((this.$refs['messageContainer'])).style.transform = `translateX( ${-(halfWidthOfPlaceholder + 6)}px`;\n }\n };\n _layoutMessageContainer();\n // setTimeout(_layoutMessageContainer)\n },\n onClick() {\n this.onElementClick(CodeRange.from(this.context))\n },\n },\n components: {\n Comment,\n Occurrence,\n Message\n }\n }\n</script>\n","<template>\n <div class=\"interaction sync inline-block\"\n v-on:click.stop=\"onClick\"\n :data-to=\"to\"\n data-type=\"interaction\"\n :data-signature=\"signature\"\n :class=\"{ 'highlight': isCurrent, 'self': isSelf}\"\n :style=\"{width: !isSelf && (interactionWidth + 'px'), transform: 'translateX(' + translateX + 'px)'}\">\n<!--Known limitation: `if(x) { m }` not showing source occurrence. -->\n <div v-if=\"(showStarter && isRootBlock) || outOfBand\"\n class=\"occurrence source border-2\"\n :class=\"{'right-to-left': rightToLeft}\">\n </div>\n <comment v-if=\"comment\" :comment=\"comment\"/>\n <component v-bind:is=\"invocation\"\n class=\"text-center\"\n :content=\"signature\"\n :assignee=\"assignee\"\n :rtl=\"rightToLeft\"\n type=\"sync\"></component>\n <occurrence :context=\"message\" :participant=\"to\" :selfCallIndent=\"passOnOffset\" :rtl=\"rightToLeft\"/>\n <message class=\"return transform -translate-y-full\" v-if=\"assignee && !isSelf\" :content=\"assignee\" :rtl=\"!rightToLeft\" type=\"return\"/>\n </div>\n</template>\n\n<script type=\"text/babel\">\n import Comment from '../Comment.vue'\n import Occurrence from '../Occurrence.vue'\n import Message from '../Message'\n import {mapGetters} from \"vuex\";\n import SelfInvocation from '../SelfInvocation'\n import {CodeRange} from '@/parser/CodeRange'\n import {ProgContext} from '@/parser'\n\n export default {\n name: 'interaction',\n props: ['context', 'comment', 'selfCallIndent'],\n computed: {\n // add tracker to the mapGetters\n ...mapGetters(['participants', 'distance2', 'cursor', 'onElementClick']),\n message: function () {\n return this.context?.message()\n },\n providedFrom: function() {\n return this.context?.message()?.ProvidedFrom()\n },\n from: function() {\n return this.providedFrom || this.origin\n },\n outOfBand: function() {\n return !!this.providedFrom && (this.providedFrom !== this.origin)\n },\n assignee: function () {\n function safeCodeGetter (context) {\n return (context && context.getFormattedText()) || ''\n }\n let assignment = this.message?.messageBody().assignment()\n if (!assignment) return ''\n let assignee = safeCodeGetter(assignment.assignee())\n const type = safeCodeGetter(assignment.type())\n return assignee + (type ? ':' + type : '')\n },\n signature: function () {\n return this.message?.SignatureText()\n },\n translateX: function() {\n const fragmentOff = 0 || 0\n // ** Starting point is always the center of 'origin' **\n // Normal flow\n if(!this.rightToLeft && !this.outOfBand) {\n return fragmentOff\n }\n\n const moveTo = !this.rightToLeft ? this.providedFrom : this.to\n const dist = this.distance2(this.origin, moveTo)\n const indent = this.selfCallIndent || 0\n return dist + fragmentOff - indent\n },\n rightToLeft: function () {\n return this.distance2(this.from, this.to) < 0\n },\n isCurrent: function () {\n return this.message?.isCurrent(this.cursor);\n },\n showStarter() {\n return this.participants.Starter().name !== '_STARTER_'\n },\n isRootBlock() {\n return this.context?.parentCtx?.parentCtx instanceof ProgContext\n },\n origin: function() {\n return this.context?.Origin()\n },\n passOnOffset: function() {\n // selfCallIndent is introduced for sync self interaction. Each time we enter a self sync interaction the selfCallIndent\n // increases by 6px (half of the width of an execution bar). However, we set the selfCallIndent back to 0 when\n // it enters a non-self sync interaction.\n return this.isSelf ? (this.selfCallIndent || 0) + 6 : 0\n },\n interactionWidth: function () {\n if (this.context && this.isSelf) {\n return 0\n }\n\n let safeOffset = this.outOfBand ? 0: (this.selfCallIndent || 0)\n return Math.abs(this.distance2(this.from, this.to) - safeOffset)\n },\n to: function () {\n return this.context?.message()?.Owner()\n },\n isSelf: function() {\n return this.to === this.from\n },\n invocation: function () {\n // return 'Message'\n return this.isSelf ? 'SelfInvocation' : 'Message'\n }\n },\n methods: {\n onClick() {\n this.onElementClick(CodeRange.from(this.context))\n },\n },\n components: {\n Message,\n SelfInvocation,\n Comment,\n Occurrence\n }\n }\n</script>\n<style scoped>\n .interaction .occurrence.source {\n position: absolute;\n height: calc(100% + 14px);\n left: -12px;\n display: none;\n }\n\n .interaction .occurrence.source.right-to-left {\n left: unset;\n right: -13px;\n }\n</style>\n","<template>\n <div :id=\"entity.name\"\n class=\"lifeline absolute flex flex-col mx-2 transform -translate-x-1/2 h-full\"\n :class=\"{'mt-8': !inGroup}\"\n :style=\"{'paddingTop': top + 'px', left: left + 'px'} \">\n <participant :entity=\"entity\"/>\n <div class=\"line w0 mx-auto flex-grow w-px\"></div>\n </div>\n</template>\n\n<script>\nimport parentLogger from '../../logger/logger'\nimport {mapGetters, mapState} from 'vuex'\nimport Participant from \"@/components/lifeline/Participant\";\nconst logger = parentLogger.child({component: 'LifeLine'})\nexport default {\n name: 'life-line',\n components: {Participant},\n props: ['entity', 'context', 'groupLeft', 'inGroup'],\n data: () => {\n return {\n translateX: 0,\n top: 0,\n }\n },\n computed: {\n ...mapGetters(['centerOf']),\n ...mapState(['scale']),\n left() {\n return this.centerOf(this.entity.name) - 8 - (this.groupLeft || 0)\n },\n },\n mounted() {\n logger.debug(`LifeLine mounted for ${this.entity.name}`);\n setTimeout( () => {\n this.setTop()\n this.$emit('rendered')\n logger.debug(`setTimeout after mounted for ${this.entity.name}`);\n })\n },\n updated() {\n logger.debug(`updated for ${this.entity.name}`);\n setTimeout( () => {\n this.setTop()\n this.$emit('rendered')\n logger.debug(`setTimeout after updated for ${this.entity.name}`);\n })\n },\n methods: {\n onSelect() {\n this.$store.commit('onSelect', this.entity.name)\n },\n setTop() {\n const firstMessage = this.$root.$el.querySelector(`[data-to=\"${this.entity.name}\"]`);\n if (firstMessage && firstMessage.attributes['data-type'].value === 'creation') {\n logger.debug(`First message to ${this.entity.name} is creation`);\n const rootY = this.$el.getBoundingClientRect().y\n const messageY = firstMessage.getBoundingClientRect().y\n this.top = (messageY - rootY) / this.scale\n } else {\n this.top = 0\n }\n }\n }\n}\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\n\n .lifeline .line {\n background: linear-gradient(to bottom, transparent 50%, #223049 50%);\n background-size: 1px 20px;\n }\n\n</style>\n","<template>\n <!-- pb-2 to show the shadow -->\n <div class=\"container absolute flex flex-col mt-8 h-full\" v-if=\"entities.length > 0\"\n :style=\"{left: `${left}px`, width: `${right-left}px`}\">\n <div class=\"flex flex-col shadow shadow-slate-500/50 flex-grow\">\n <!-- TODO: add group name back later. -->\n<!-- <div class=\"h-14 absolute\" :class=\"{'-mt-12': !!name}\">-->\n<!-- <label class=\"block text-center font-semibold\">{{name}}</label>-->\n<!-- </div>-->\n <div class=\"lifeline-group relative flex-grow hover:bg-green-100\">\n <life-line v-for=\"entity in entities\"\n inGroup=\"true\"\n :key=\"entity.name\"\n :ref=\"entity.name\"\n :entity=\"entity\"\n :group-left=\"left\"/>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n import {Participants} from '@/parser'\n import LifeLine from './LifeLine'\n import {mapGetters} from \"vuex\";\n import WidthProviderOnBrowser from \"@/positioning/WidthProviderFunc\";\n import {TextType} from \"@/positioning/Coordinate\";\n\n export default {\n name: 'lifeline-group',\n props: ['context'],\n computed: {\n ...mapGetters(['centerOf']),\n name() {\n return this.context?.name()?.getFormattedText()\n },\n offset() {\n return 0;\n },\n left() {\n const first = this.entities[0].name;\n const width = Math.max(WidthProviderOnBrowser(first, TextType.ParticipantName), '100');\n return this.centerOf(first) - (width / 2) - 8;\n },\n right() {\n const width = Math.max(WidthProviderOnBrowser(this.entities.slice(-1).name, TextType.ParticipantName), '100');\n const last = this.entities.slice(0).pop().name\n return this.centerOf(last) + (width / 2) + 20;\n },\n entities() {\n return Participants(this.context).Array()\n }\n },\n components: {\n LifeLine\n }\n }\n</script>\n\n<style scoped>\n</style>\n","<template>\n <div class=\"life-line-layer absolute h-full\" :style=\"{'min-width': '200px'}\">\n <life-line\n v-if=\"starterOnTheLeft\"\n :entity=\"starterParticipant\"\n class=\"starter\"\n :class=\"{invisible: invisibleStarter}\"\n />\n <template v-for=\"(child, index) in explicitGroupAndParticipants\">\n <life-line-group :key=\"index\"\n v-if=\"child instanceof GroupContext\"\n :context=\"child\"/>\n <life-line :key=\"index\"\n v-if=\"child instanceof ParticipantContext\"\n :entity=\"getParticipantEntity(child)\"/>\n </template>\n <life-line v-for=\"entity in implicitParticipants\" :key=\"entity.name\" :entity=\"entity\"/>\n </div>\n</template>\n\n<script>\nimport parentLogger from '../../logger/logger'\nimport {GroupContext, ParticipantContext, Participants} from '../../parser/index.js'\nimport {mapGetters, mapMutations} from 'vuex'\nimport LifeLine from './LifeLine.vue'\nimport LifeLineGroup from './LifeLineGroup'\nconst logger = parentLogger.child({component: 'LifeLineLayer'})\n\nexport default {\n name: 'life-line-layer',\n props: ['context'],\n computed: {\n ...mapGetters(['participants', 'GroupContext', 'ParticipantContext', 'centerOf']),\n invisibleStarter() {\n return this.starterParticipant.name === '_STARTER_'\n },\n starterParticipant() {\n return this.participants.Starter()\n },\n starterOnTheLeft() {\n return !this.starterParticipant.explicit\n },\n implicitParticipants() {\n return this.participants.ImplicitArray()\n },\n explicitGroupAndParticipants() {\n return this.context?.children.filter(c => {\n const isGroup = c instanceof GroupContext\n const isParticipant = (c instanceof ParticipantContext)\n return isGroup || isParticipant\n })\n }\n },\n methods: {\n ...mapMutations(['increaseGeneration']),\n getParticipantEntity(ctx) {\n return Participants(ctx).First()\n }\n },\n updated() {\n logger.debug('LifeLineLayer updated');\n },\n mounted() {\n logger.debug('LifeLineLayer mounted');\n },\n components: {\n LifeLine,\n LifeLineGroup\n }\n}\n</script>\n\n","<template>\n <!-- h-10 gives participant a fixed height same as message container in Creation.\n recommendation to theme creators are not to override. -->\n <div class=\"relative participant flex flex-col justify-center z-10 h-10\"\n :class=\"{'selected': selected, 'border-transparent': !!icon}\"\n ref=\"participant\"\n :style=\"{backgroundColor: backgroundColor, color: color}\"\n @click=\"onSelect\">\n <img v-if=\"!!icon\" :src=\"icon\" class=\"absolute left-1/2 transform -translate-x-1/2 -translate-y-full h-8\" :alt=\"`icon for ${entity.name}`\">\n <!-- Put in a div to give it a fixed height, because stereotype is dynamic. -->\n <div class=\"h-5 flex flex-col justify-center\">\n <label class=\"interface\" v-if=\"stereotype\">«{{ stereotype }}»</label>\n <label class=\"name\">{{ entity.label || entity.name }}</label>\n </div>\n </div>\n</template>\n\n<script>\nimport {brightnessIgnoreAlpha, removeAlpha} from '../../utils/Color'\nconst iconPath = {\n actor: require('../../assets/actor.svg'),\n boundary: require('../../assets/Robustness_Diagram_Boundary.svg'),\n control: require('../../assets/Robustness_Diagram_Control.svg'),\n database: require('../../assets/database.svg'),\n entity: require('../../assets/Robustness_Diagram_Entity.svg'),\n // AWS service\n cloudwatch: require('../../assets/Architecture-Service-Icons_09172021/Arch_Management-Governance/16/Arch_Amazon-CloudWatch_16.svg'),\n cloudfront: require('../../assets/Architecture-Service-Icons_09172021/Arch_Networking-Content-Delivery/16/Arch_Amazon-CloudFront_16.svg'),\n cognito: require('../../assets/Architecture-Service-Icons_09172021/Arch_Security-Identity-Compliance/16/Arch_Amazon-Cognito_16.svg'),\n dynamodb: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-DynamoDB_16.svg'),\n ebs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-Block-Store_16.svg'),\n ec2: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-EC2_16.svg'),\n ecs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-Elastic-Container-Service_16.svg'),\n efs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-File-System_16.svg'),\n elasticache: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-ElastiCache_16.svg'),\n elasticbeantalk: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_AWS-Elastic-Beanstalk_16.svg'),\n elasticfilesystem: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-File-System_16.svg'),\n glacier: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Simple-Storage-Service-Glacier_16.svg'),\n iam: require('../../assets/Architecture-Service-Icons_09172021/Arch_Security-Identity-Compliance/16/Arch_AWS-Identity-and-Access-Management_16.svg'),\n kinesis: require('../../assets/Architecture-Service-Icons_09172021/Arch_Analytics/Arch_16/Arch_Amazon-Kinesis_16.svg'),\n lambda: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_AWS-Lambda_16.svg'),\n lightsail: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-Lightsail_16.svg'),\n rds: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-RDS_16.svg'),\n redshift: require('../../assets/Architecture-Service-Icons_09172021/Arch_Analytics/Arch_16/Arch_Amazon-Redshift_16.svg'),\n s3: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Simple-Storage-Service_16.svg'),\n sns: require('../../assets/Architecture-Service-Icons_09172021/Arch_App-Integration/Arch_16/Arch_Amazon-Simple-Notification-Service_16.svg'),\n sqs: require('../../assets/Architecture-Service-Icons_09172021/Arch_App-Integration/Arch_16/Arch_Amazon-Simple-Queue-Service_16.svg'),\n sagemaker: require('../../assets/Architecture-Service-Icons_09172021/Arch_Machine-Learning/16/Arch_Amazon-SageMaker_16.svg'),\n vpc: require('../../assets/Architecture-Service-Icons_09172021/Arch_Networking-Content-Delivery/16/Arch_Amazon-Virtual-Private-Cloud_16.svg'),\n // Azure services\n azureactivedirectory: require('../../assets/Azure_Public_Service_Icons/Icons/Identity/10221-icon-service-Azure-Active-Directory.svg'),\n azurebackup: require('../../assets/Azure_Public_Service_Icons/Icons/Azure Stack/10108-icon-service-Infrastructure-Backup.svg'),\n azurecdn: require('../../assets/Azure_Public_Service_Icons/Icons/App Services/00056-icon-service-CDN-Profiles.svg'),\n azuredatafactory: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/10126-icon-service-Data-Factory.svg'),\n azuredevops: require('../../assets/Azure_Public_Service_Icons/Icons/DevOps/10261-icon-service-Azure-DevOps.svg'),\n azurefunction: require('../../assets/Azure_Public_Service_Icons/Icons/Compute/10029-icon-service-Function-Apps.svg'),\n azuresql: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/02390-icon-service-Azure-SQL.svg'),\n cosmosdb: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/10121-icon-service-Azure-Cosmos-DB.svg'),\n logicapps: require('../../assets/Azure_Public_Service_Icons/Icons/Integration/10201-icon-service-Logic-Apps.svg'),\n virtualmachine: require('../../assets/Azure_Public_Service_Icons/Icons/Compute/10021-icon-service-Virtual-Machine.svg'),\n // GCP services\n bigtable: require('../../assets/google-cloud-icons/bigtable/bigtable.svg'),\n bigquery: require('../../assets/google-cloud-icons/bigquery/bigquery.svg'),\n cloudcdn: require('../../assets/google-cloud-icons/cloud_cdn/cloud_cdn.svg'),\n clouddns: require('../../assets/google-cloud-icons/cloud_dns/cloud_dns.svg'),\n cloudinterconnect: require('../../assets/google-cloud-icons/cloud_interconnect/cloud_interconnect.svg'),\n cloudloadbalancing: require('../../assets/google-cloud-icons/cloud_load_balancing/cloud_load_balancing.svg'),\n cloudsql: require('../../assets/google-cloud-icons/cloud_sql/cloud_sql.svg'),\n cloudstorage: require('../../assets/google-cloud-icons/cloud_storage/cloud_storage.svg'),\n datalab: require('../../assets/google-cloud-icons/datalab/datalab.svg'),\n dataproc: require('../../assets/google-cloud-icons/dataproc/dataproc.svg'),\n googleiam: require('../../assets/google-cloud-icons/identity_and_access_management/identity_and_access_management.svg'),\n googlesecurity: require('../../assets/google-cloud-icons/security/security.svg'),\n googlevpc: require('../../assets/google-cloud-icons/virtual_private_cloud/virtual_private_cloud.svg'),\n pubsub: require('../../assets/google-cloud-icons/pubsub/pubsub.svg'),\n securityscanner: require('../../assets/google-cloud-icons/cloud_security_scanner/cloud_security_scanner.svg'),\n stackdriver: require('../../assets/google-cloud-icons/stackdriver/stackdriver.svg'),\n visionapi: require('../../assets/google-cloud-icons/cloud_vision_api/cloud_vision_api.svg'),\n}\n\nexport default {\n name: \"Participant\",\n props: {\n entity: {\n type: Object,\n required: true\n },\n },\n data() {\n return {\n color: '#000'\n }\n },\n mounted() {\n this.updateFontColor();\n },\n updated() {\n this.updateFontColor();\n },\n computed: {\n selected () {\n return this.$store.state.selected.includes(this.entity.name)\n },\n stereotype () {\n return this.entity.stereotype\n },\n icon() {\n return iconPath[this.entity.type?.toLowerCase()]\n },\n backgroundColor() {\n try {\n // Remove alpha for such a case:\n // 1. Background color for parent has low brightness (e.g. #000)\n // 2. Alpha is low (e.g. 0.1)\n // 3. Entity background has high brightness (e.g. #fff)\n // If we do not remove alpha, the computed background color will be bright while the perceived brightness is low.\n // This will cause issue when calculating font color.\n return this.entity.color && removeAlpha(this.entity.color);\n } catch (e) {\n return undefined;\n }\n },\n },\n methods: {\n onSelect () {\n this.$store.commit('onSelect', this.entity.name)\n },\n updateFontColor () {\n let backgroundColor = window.getComputedStyle(this.$refs.participant).getPropertyValue('background-color');\n if (!backgroundColor) {\n return;\n }\n let b = brightnessIgnoreAlpha(backgroundColor);\n this.color = b > 128 ? '#000' : '#fff';\n }\n }\n}\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n<div class=\"invisible\">\n <message :content=\"text\" rtl=\"false\" type=\"sync\" />\n</div>\n</template>\n\n<script>\nimport Message from \"../Message\";\nexport default {\n name: \"WidthProvider\",\n components: {Message},\n data: function () {\n return {\n text: 'abcd',\n }\n },\n methods: {\n width: function (text, type) {\n console.log(text, type);\n this.text = text;\n return this.$el.clientWidth;\n },\n },\n mounted() {\n this.$store.state.widthProvider = this;\n }\n}\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div>\n <div class=\"tooltip bottom whitespace-normal\" data-tooltip=\"We (the vendor) do not have access to your data. The diagram is generated in this browser.\">\n <img :src=\"iconPath\" alt=\"Privacy Icon\" class=\"object-contain h-6 w-6 m-auto\" />\n </div>\n </div>\n</template>\n\n<script>\nimport privacyIcon from '@/assets/icons/privacy.svg';\nexport default {\n name: \"Privacy\",\n data() {\n return {\n iconPath: privacyIcon\n };\n }\n}\n</script>\n\n<style scoped>\n\n.tooltip {\n cursor: pointer;\n position: relative;\n display: block;\n width: 100%;\n text-align: center;\n z-index: 10;\n}\n.tooltip span {\n border-bottom: 1px dotted;\n}\n.tooltip:after {\n display: none;\n content: attr(data-tooltip);\n background: #e8e9e9;\n max-width: 500px;\n width: 200px;\n position: absolute;\n left: -200px;\n right: 0;\n margin: auto;\n opacity: 0;\n height: auto;\n font-size: 14px;\n padding: 10px;\n border-radius: 4px;\n color: #111;\n text-align: left;\n}\n\n.tooltip.bottom:after {\n top: 80%;\n transition: opacity 0.3s ease 0.3s, top 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.3s;\n}\n.tooltip.bottom:hover:after {\n display: block;\n top: 130%;\n opacity: 1;\n}\n\n</style>\n","<template>\n <ul role=\"list\" class=\"mt-3 grid grid-cols-4 gap-5 sm:gap-6 sm:grid-cols-6 lg:grid-cols-8\">\n <li v-for=\"type in types\" :key=\"type\" class=\"col-span-1 flex flex-col shadow-sm rounded-md\">\n <div class=\"h-12 flex items-center justify-center bg-gray-50 text-white text-sm font-medium rounded-t-md\">\n <img v-if=\"!!icon\" :src=\"icon(type)\" class=\"object-contain h-8 w-8 m-auto\" :alt=\"`icon for ${type}`\">\n </div>\n <div class=\"flex items-center justify-center border-t border-r border-b border-gray-200 bg-white rounded-b-md\">\n <div class=\"px-2 py-2 text-xs\">\n <span class=\"text-gray-900 font-medium hover:text-gray-600\">@{{type}}</span>\n </div>\n </div>\n </li>\n </ul>\n</template>\n\n<script>\nconst iconPath = {\n actor: require('../../assets/actor.svg'),\n boundary: require('../../assets/Robustness_Diagram_Boundary.svg'),\n control: require('../../assets/Robustness_Diagram_Control.svg'),\n database: require('../../assets/database.svg'),\n entity: require('../../assets/Robustness_Diagram_Entity.svg'),\n // AWS service\n cloudwatch: require('../../assets/Architecture-Service-Icons_09172021/Arch_Management-Governance/16/Arch_Amazon-CloudWatch_16.svg'),\n cloudfront: require('../../assets/Architecture-Service-Icons_09172021/Arch_Networking-Content-Delivery/16/Arch_Amazon-CloudFront_16.svg'),\n cognito: require('../../assets/Architecture-Service-Icons_09172021/Arch_Security-Identity-Compliance/16/Arch_Amazon-Cognito_16.svg'),\n dynamodb: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-DynamoDB_16.svg'),\n ebs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-Block-Store_16.svg'),\n ec2: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-EC2_16.svg'),\n ecs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-Elastic-Container-Service_16.svg'),\n efs: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-File-System_16.svg'),\n elasticache: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-ElastiCache_16.svg'),\n elasticbeantalk: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_AWS-Elastic-Beanstalk_16.svg'),\n elasticfilesystem: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Elastic-File-System_16.svg'),\n glacier: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Simple-Storage-Service-Glacier_16.svg'),\n iam: require('../../assets/Architecture-Service-Icons_09172021/Arch_Security-Identity-Compliance/16/Arch_AWS-Identity-and-Access-Management_16.svg'),\n kinesis: require('../../assets/Architecture-Service-Icons_09172021/Arch_Analytics/Arch_16/Arch_Amazon-Kinesis_16.svg'),\n lambda: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_AWS-Lambda_16.svg'),\n lightsail: require('../../assets/Architecture-Service-Icons_09172021/Arch_Compute/16/Arch_Amazon-Lightsail_16.svg'),\n rds: require('../../assets/Architecture-Service-Icons_09172021/Arch_Database/16/Arch_Amazon-RDS_16.svg'),\n redshift: require('../../assets/Architecture-Service-Icons_09172021/Arch_Analytics/Arch_16/Arch_Amazon-Redshift_16.svg'),\n s3: require('../../assets/Architecture-Service-Icons_09172021/Arch_Storage/16/Arch_Amazon-Simple-Storage-Service_16.svg'),\n sns: require('../../assets/Architecture-Service-Icons_09172021/Arch_App-Integration/Arch_16/Arch_Amazon-Simple-Notification-Service_16.svg'),\n sqs: require('../../assets/Architecture-Service-Icons_09172021/Arch_App-Integration/Arch_16/Arch_Amazon-Simple-Queue-Service_16.svg'),\n sagemaker: require('../../assets/Architecture-Service-Icons_09172021/Arch_Machine-Learning/16/Arch_Amazon-SageMaker_16.svg'),\n vpc: require('../../assets/Architecture-Service-Icons_09172021/Arch_Networking-Content-Delivery/16/Arch_Amazon-Virtual-Private-Cloud_16.svg'),\n // Azure services\n azureactivedirectory: require('../../assets/Azure_Public_Service_Icons/Icons/Identity/10221-icon-service-Azure-Active-Directory.svg'),\n azurebackup: require('../../assets/Azure_Public_Service_Icons/Icons/Azure Stack/10108-icon-service-Infrastructure-Backup.svg'),\n azurecdn: require('../../assets/Azure_Public_Service_Icons/Icons/App Services/00056-icon-service-CDN-Profiles.svg'),\n azuredatafactory: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/10126-icon-service-Data-Factory.svg'),\n azuredevops: require('../../assets/Azure_Public_Service_Icons/Icons/DevOps/10261-icon-service-Azure-DevOps.svg'),\n azurefunction: require('../../assets/Azure_Public_Service_Icons/Icons/Compute/10029-icon-service-Function-Apps.svg'),\n azuresql: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/02390-icon-service-Azure-SQL.svg'),\n cosmosdb: require('../../assets/Azure_Public_Service_Icons/Icons/Databases/10121-icon-service-Azure-Cosmos-DB.svg'),\n logicapps: require('../../assets/Azure_Public_Service_Icons/Icons/Integration/10201-icon-service-Logic-Apps.svg'),\n virtualmachine: require('../../assets/Azure_Public_Service_Icons/Icons/Compute/10021-icon-service-Virtual-Machine.svg'),\n // GCP services\n bigtable: require('../../assets/google-cloud-icons/bigtable/bigtable.svg'),\n bigquery: require('../../assets/google-cloud-icons/bigquery/bigquery.svg'),\n cloudcdn: require('../../assets/google-cloud-icons/cloud_cdn/cloud_cdn.svg'),\n clouddns: require('../../assets/google-cloud-icons/cloud_dns/cloud_dns.svg'),\n cloudinterconnect: require('../../assets/google-cloud-icons/cloud_interconnect/cloud_interconnect.svg'),\n cloudloadbalancing: require('../../assets/google-cloud-icons/cloud_load_balancing/cloud_load_balancing.svg'),\n cloudsql: require('../../assets/google-cloud-icons/cloud_sql/cloud_sql.svg'),\n cloudstorage: require('../../assets/google-cloud-icons/cloud_storage/cloud_storage.svg'),\n datalab: require('../../assets/google-cloud-icons/datalab/datalab.svg'),\n dataproc: require('../../assets/google-cloud-icons/dataproc/dataproc.svg'),\n googleiam: require('../../assets/google-cloud-icons/identity_and_access_management/identity_and_access_management.svg'),\n googlesecurity: require('../../assets/google-cloud-icons/security/security.svg'),\n googlevpc: require('../../assets/google-cloud-icons/virtual_private_cloud/virtual_private_cloud.svg'),\n pubsub: require('../../assets/google-cloud-icons/pubsub/pubsub.svg'),\n securityscanner: require('../../assets/google-cloud-icons/cloud_security_scanner/cloud_security_scanner.svg'),\n stackdriver: require('../../assets/google-cloud-icons/stackdriver/stackdriver.svg'),\n visionapi: require('../../assets/google-cloud-icons/cloud_vision_api/cloud_vision_api.svg'),\n}\n\nexport default {\n name: \"IconList\",\n props: ['types'],\n computed: {\n\n },\n methods: {\n icon(type) {\n return iconPath[type?.toLowerCase()]\n }\n },\n\n}\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n\n <div class=\"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block\">\n <div class=\"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity\" aria-hidden=\"true\"></div>\n\n <!-- This element is to trick the browser into centering the modal contents. -->\n <span class=\"hidden sm:inline-block sm:align-middle sm:h-screen\" aria-hidden=\"true\">​</span>\n\n <div class=\"z-40 inline-block align-bottom bg-white rounded-lg px-4 pb-4 text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:p-2\">\n <div>\n <div class=\"bg-white px-4 py-5 border-b border-gray-200 sm:px-6\" slot=\"header\">\n <h3 class=\"text-xl leading-6 font-medium text-gray-900 inline-block\">\n ZenUML Tips\n </h3>\n <button type=\"button\" @click=\"closeTipsDialog()\" class=\"float-right bg-white rounded-md inline-flex items-center justify-center text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500\">\n <span class=\"sr-only\">Close menu</span>\n <!-- Heroicon name: outline/x -->\n <svg class=\"h-6 w-6\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n </div>\n <div slot=\"body\">\n <div class=\"relative bg-white pb-32 mt-4 overflow-hidden\">\n <div class=\"relative\">\n <div class=\"lg:mx-auto lg:max-w-11/12 lg:px-8\">\n <div class=\"grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1\">\n <div>\n <div class=\"px-4 max-w-full mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n <h2 class=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">Declare Participants</h2>\n <pre class=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"><code>// Define a Starter (optional)\n@Starter(A)\n\n// Show icons\n@EC2 A\n\n// Use 'group' keyword\ngroup GroupName { B C }\n\n// Use stereotype\n<<servlet>> ServiceX</code></pre>\n\n </div>\n <div class=\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n <h2 class=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">Divider</h2>\n <pre class=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"><code>A.method()\n==divider name==\nB.method()\n</code></pre>\n </div>\n </div>\n <div class=\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\">\n <h2 class=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">Fragments</h2>\n <pre class=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"><code>// Alt (AKA if/else)\nif(condition1) {}\nelse if (condition2) {}\nelse {}\n\n// `loop`, `for`, `forEach`, `while`\n// are treated the same\nforEach(records) {}\n\n// Opt\nopt {}\n\n// Par\npar {}\n\n// Try Catch Finally\ntry {} catch() {} finally {}\n</code></pre>\n </div>\n <div class=\"px-4 w-full mx-auto lg:max-w-none lg:mx-0\">\n <h2 class=\"mt-4 mb-4 text-lg leading-6 font-medium text-gray-900\">Messages</h2>\n <pre class=\"text-xs w-full bg-gray-50 text-gray-600 p-2 rounded-lg\"><code>//Creation\nnew ParticipantName()\n\n//Sync Message\nA.method\nA->B.method\n\n//Async Message\nA->B: async message\n\n//Reply Message, three styles\nx = A.method\nA.method() {\n return x\n}\nA.method() {\n @return A->B: message\n}</code></pre>\n </div>\n </div>\n <div class=\"px-4 max-w-7xl mx-auto sm:px-6 lg:max-w-none lg:mx-0\">\n <h2 class=\"mt-8 mb-4 text-lg leading-6 font-medium text-gray-900\">Builtin Icons</h2>\n <p class=\"text-sm text-gray-500\">Use <span class=\"rounded inline-block bg-gray-50 text-gray-600\">\n <code class=\"text-xs\">@Actor TheParticipant</code> </span> to define the type of the participant.</p>\n <IconList :types=\"standardTypes\"/>\n <hr class=\"mt-4\">\n <IconList :types=\"awsServices\" />\n <hr class=\"mt-4\">\n <IconList :types=\"azureServices\" />\n <hr class=\"mt-4\">\n <IconList :types=\"googleServices\" />\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</template>\n\n<script>\nimport IconList from \"@/components/tutorial/IconList\";\n\nexport default {\n name: \"TipsDialog\",\n components: {IconList},\n computed: {\n standardTypes() {\n return [\n 'Actor', 'Boundary', 'Control', 'Database', 'Entity',\n ]\n },\n awsServices() {\n return [\n 'CloudWatch', 'CloudFront', 'Cognito', 'DynamoDB', 'EBS', 'EC2', 'ECS',\n 'EFS', 'ElastiCache', 'ElasticBeantalk', 'ElasticFileSystem', 'Glacier',\n 'IAM', 'Kinesis', 'Lambda', 'LightSail', 'RDS', 'Redshift', 'S3', 'SNS',\n 'SQS', 'Sagemaker', 'VPC',\n ]\n },\n azureServices() {\n return [\n 'AzureActiveDirectory', 'AzureBackup', 'AzureCDN', 'AzureDataFactory',\n 'AzureDevOps', 'AzureFunction', 'AzureSQL', 'CosmosDB', 'LogicApps', 'VirtualMachine',\n ]\n },\n googleServices() {\n return [\n 'BigTable', 'BigQuery', 'CloudCDN', 'CloudDNS', 'CloudInterconnect', 'CloudLoadBalancing',\n 'CloudSQL', 'CloudStorage', 'DataLab', 'DataProc', 'GoogleIAM', 'GoogleSecurity',\n 'GoogleVPC', 'PubSub', 'SecurityScanner', 'StackDriver', 'VisionAPI'\n ]\n },\n },\n methods: {\n closeTipsDialog() {\n this.$store.state.showTips = false\n try {\n this.$gtag?.event('close', {\n 'event_category': 'help', 'event_label': 'tips dialog'\n })\n } catch (e) {\n console.error(e)\n }\n }\n }\n}\n</script>\n\n<style scoped>\n\n</style>\n","import {Depth, Participants} from '../parser'\nimport {mapGetters} from 'vuex'\n\nexport const FRAGMENT_LEFT_BASE_OFFSET = 30;\nexport const FRAGMENT_RIGHT_BASE_OFFSET = 100;\n\nexport default {\n computed: {\n ...mapGetters(['coordinates', 'distance2']),\n localParticipants: function() {\n // [A, B, C, D] the order may not be the same as appeared on the Lifeline layer\n return [this.from, ...Participants(this.context).ImplicitArray().map(p => p.name)]\n },\n leftParticipant: function () {\n const allParticipants = this.coordinates.participantModels.map(p => p.name);\n return allParticipants.find(p => this.localParticipants.includes(p))\n },\n rightParticipant: function () {\n const allParticipants = this.coordinates.participantModels.map(p => p.name);\n return allParticipants.reverse().find(p => this.localParticipants.includes(p))\n },\n depth: function () {\n return Depth(this.context)\n },\n offsetX: function () {\n let extra = 10 * (this.depth + 1)\n return this.distance2(this.leftParticipant, this.from) + extra + FRAGMENT_LEFT_BASE_OFFSET\n },\n fragmentStyle: function () {\n return {\n // +1px for the border of the fragment\n transform: 'translateX(' + ((this.offsetX + 1) * (-1)) + 'px)',\n width: (this.distance2(this.leftParticipant, this.rightParticipant) + 20 * this.depth + FRAGMENT_LEFT_BASE_OFFSET + FRAGMENT_RIGHT_BASE_OFFSET) + 'px',\n }\n }\n }\n}\n","// Generated from sequenceLexer.g4 by ANTLR 4.8\n// jshint ignore: start\nvar antlr4 = require('antlr4/index');\n\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0002?\\u01c4\\b\\u0001\\b\\u0001\\b\\u0001\\u0004\\u0002\\t\\u0002\\u0004\\u0003\",\n \"\\t\\u0003\\u0004\\u0004\\t\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\",\n \"\\u0004\\u0007\\t\\u0007\\u0004\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\",\n \"\\t\\u000b\\u0004\\f\\t\\f\\u0004\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\",\n \"\\u0004\\u0010\\t\\u0010\\u0004\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\",\n \"\\t\\u0013\\u0004\\u0014\\t\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\",\n \"\\u0004\\u0017\\t\\u0017\\u0004\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\",\n \"\\t\\u001a\\u0004\\u001b\\t\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\",\n \"\\u0004\\u001e\\t\\u001e\\u0004\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\",\n \"\\t\\\"\\u0004#\\t#\\u0004$\\t$\\u0004%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004\",\n \")\\t)\\u0004*\\t*\\u0004+\\t+\\u0004,\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u0004\",\n \"0\\t0\\u00041\\t1\\u00042\\t2\\u00043\\t3\\u00044\\t4\\u00045\\t5\\u00046\\t6\\u0004\",\n \"7\\t7\\u00048\\t8\\u00049\\t9\\u0004:\\t:\\u0004;\\t;\\u0004<\\t<\\u0004=\\t=\\u0004\",\n \">\\t>\\u0004?\\t?\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0003\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0003\\u0004\\u0003\\u0004\\u0003\\u0004\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0003\\u0005\\u0003\\u0006\\u0003\\u0006\\u0003\\u0006\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\b\\u0003\\b\\u0006\\b\\u009b\\n\\b\\r\\b\\u000e\\b\\u009c\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0003\\u000b\\u0003\\u000b\\u0003\\u000b\",\n \"\\u0003\\f\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\u000e\\u0003\\u000e\\u0003\",\n \"\\u000f\\u0003\\u000f\\u0003\\u000f\\u0003\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0012\\u0003\\u0012\\u0003\\u0013\\u0003\\u0013\\u0003\",\n \"\\u0014\\u0003\\u0014\\u0003\\u0015\\u0003\\u0015\\u0003\\u0016\\u0003\\u0016\\u0003\",\n \"\\u0017\\u0003\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0019\\u0003\\u0019\\u0003\",\n \"\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0003\\u001c\\u0003\\u001c\\u0003\",\n \"\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\\u001f\\u0003\\u001f\\u0003\",\n \"\\u001f\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003 \\u0003 \\u0003 \\u0003\",\n \" \\u0003!\\u0003!\\u0003!\\u0003!\\u0003\\\"\\u0003\\\"\\u0003\\\"\\u0003#\\u0003#\",\n \"\\u0003#\\u0003#\\u0003#\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003\",\n \"$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003\",\n \"$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0003$\\u0005\",\n \"$\\u0102\\n$\\u0003%\\u0003%\\u0003%\\u0003%\\u0003%\\u0003%\\u0003%\\u0003&\\u0003\",\n \"&\\u0003&\\u0003&\\u0003\\'\\u0003\\'\\u0003\\'\\u0003\\'\\u0003(\\u0003(\\u0003\",\n \"(\\u0003(\\u0003(\\u0003(\\u0003)\\u0003)\\u0003)\\u0003)\\u0003*\\u0003*\\u0003\",\n \"*\\u0003+\\u0003+\\u0003+\\u0003+\\u0003,\\u0003,\\u0003,\\u0003,\\u0003,\\u0003\",\n \",\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003-\\u0003.\\u0003\",\n \".\\u0003.\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003\",\n \"/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0003/\\u0005/\\u0145\\n/\\u0003\",\n \"0\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u0003\",\n \"0\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u0003\",\n \"0\\u00030\\u00030\\u00030\\u00030\\u00030\\u00050\\u0161\\n0\\u00031\\u00031\\u0007\",\n \"1\\u0165\\n1\\f1\\u000e1\\u0168\\u000b1\\u00032\\u00032\\u00033\\u00033\\u0007\",\n \"3\\u016e\\n3\\f3\\u000e3\\u0171\\u000b3\\u00034\\u00064\\u0174\\n4\\r4\\u000e4\\u0175\",\n \"\\u00035\\u00065\\u0179\\n5\\r5\\u000e5\\u017a\\u00035\\u00035\\u00075\\u017f\\n\",\n \"5\\f5\\u000e5\\u0182\\u000b5\\u00035\\u00035\\u00065\\u0186\\n5\\r5\\u000e5\\u0187\",\n \"\\u00055\\u018a\\n5\\u00036\\u00036\\u00036\\u00036\\u00076\\u0190\\n6\\f6\\u000e\",\n \"6\\u0193\\u000b6\\u00036\\u00056\\u0196\\n6\\u00037\\u00037\\u00037\\u00037\\u0003\",\n \"8\\u00038\\u00038\\u00038\\u00039\\u00039\\u00039\\u00039\\u00079\\u01a4\\n9\\f\",\n \"9\\u000e9\\u01a7\\u000b9\\u00039\\u00039\\u00039\\u00039\\u0003:\\u0003:\\u0003\",\n \";\\u0006;\\u01b0\\n;\\r;\\u000e;\\u01b1\\u0003<\\u0003<\\u0003<\\u0003<\\u0003\",\n \"=\\u0003=\\u0003=\\u0003=\\u0003>\\u0006>\\u01bd\\n>\\r>\\u000e>\\u01be\\u0003\",\n \"?\\u0003?\\u0003?\\u0003?\\u0003\\u01a5\\u0002@\\u0005\\u0003\\u0007\\u0004\\t\",\n \"\\u0005\\u000b\\u0006\\r\\u0007\\u000f\\u0002\\u0011\\b\\u0013\\t\\u0015\\n\\u0017\",\n \"\\u000b\\u0019\\f\\u001b\\r\\u001d\\u000e\\u001f\\u000f!\\u0010#\\u0011%\\u0012\",\n \"\\'\\u0013)\\u0014+\\u0015-\\u0016/\\u00171\\u00183\\u00195\\u001a7\\u001b9\\u001c\",\n \";\\u001d=\\u001e?\\u001fA C!E\\\"G#I$K%M&O\\'Q(S)U*W+Y,[-]._/a0c1e2g3i4k5\",\n \"m6o7q8s9u:w;y<{=}>\\u007f?\\u0005\\u0002\\u0003\\u0004\\n\\u0005\\u00022;CH\",\n \"ch\\u0006\\u00022;C\\\\aac|\\u0005\\u0002C\\\\aac|\\u0003\\u00022;\\u0005\\u0002\",\n \"\\f\\f\\u000f\\u000f$$\\u0004\\u0002\\f\\f\\u000f\\u000f\\u0004\\u0002\\u000b\\u000b\",\n \"\\\"\\\"\\u0003\\u0002\\\"\\\"\\u0002\\u01d6\\u0002\\u0005\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u0007\\u0003\\u0002\\u0002\\u0002\\u0002\\t\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u000b\\u0003\\u0002\\u0002\\u0002\\u0002\\r\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u0011\\u0003\\u0002\\u0002\\u0002\\u0002\\u0013\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u0015\\u0003\\u0002\\u0002\\u0002\\u0002\\u0017\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u0019\\u0003\\u0002\\u0002\\u0002\\u0002\\u001b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002\\u001d\\u0003\\u0002\\u0002\\u0002\\u0002\\u001f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002!\\u0003\\u0002\\u0002\\u0002\\u0002#\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"%\\u0003\\u0002\\u0002\\u0002\\u0002\\'\\u0003\\u0002\\u0002\\u0002\\u0002)\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002+\\u0003\\u0002\\u0002\\u0002\\u0002-\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002/\\u0003\\u0002\\u0002\\u0002\\u00021\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00023\\u0003\\u0002\\u0002\\u0002\\u00025\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00027\\u0003\\u0002\\u0002\\u0002\\u00029\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \";\\u0003\\u0002\\u0002\\u0002\\u0002=\\u0003\\u0002\\u0002\\u0002\\u0002?\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002A\\u0003\\u0002\\u0002\\u0002\\u0002C\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002E\\u0003\\u0002\\u0002\\u0002\\u0002G\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002I\\u0003\\u0002\\u0002\\u0002\\u0002K\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002M\\u0003\\u0002\\u0002\\u0002\\u0002O\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"Q\\u0003\\u0002\\u0002\\u0002\\u0002S\\u0003\\u0002\\u0002\\u0002\\u0002U\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002W\\u0003\\u0002\\u0002\\u0002\\u0002Y\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002[\\u0003\\u0002\\u0002\\u0002\\u0002]\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002_\\u0003\\u0002\\u0002\\u0002\\u0002a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0002c\\u0003\\u0002\\u0002\\u0002\\u0002e\\u0003\\u0002\\u0002\\u0002\\u0002\",\n \"g\\u0003\\u0002\\u0002\\u0002\\u0002i\\u0003\\u0002\\u0002\\u0002\\u0002k\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0002m\\u0003\\u0002\\u0002\\u0002\\u0002o\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0002q\\u0003\\u0002\\u0002\\u0002\\u0002s\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0002u\\u0003\\u0002\\u0002\\u0002\\u0003w\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0003y\\u0003\\u0002\\u0002\\u0002\\u0003{\\u0003\\u0002\\u0002\\u0002\\u0004\",\n \"}\\u0003\\u0002\\u0002\\u0002\\u0004\\u007f\\u0003\\u0002\\u0002\\u0002\\u0005\",\n \"\\u0081\\u0003\\u0002\\u0002\\u0002\\u0007\\u0089\\u0003\\u0002\\u0002\\u0002\\t\",\n \"\\u008d\\u0003\\u0002\\u0002\\u0002\\u000b\\u0090\\u0003\\u0002\\u0002\\u0002\\r\",\n \"\\u0093\\u0003\\u0002\\u0002\\u0002\\u000f\\u0096\\u0003\\u0002\\u0002\\u0002\\u0011\",\n \"\\u0098\\u0003\\u0002\\u0002\\u0002\\u0013\\u009e\\u0003\\u0002\\u0002\\u0002\\u0015\",\n \"\\u00a1\\u0003\\u0002\\u0002\\u0002\\u0017\\u00a4\\u0003\\u0002\\u0002\\u0002\\u0019\",\n \"\\u00a7\\u0003\\u0002\\u0002\\u0002\\u001b\\u00aa\\u0003\\u0002\\u0002\\u0002\\u001d\",\n \"\\u00ac\\u0003\\u0002\\u0002\\u0002\\u001f\\u00ae\\u0003\\u0002\\u0002\\u0002!\",\n \"\\u00b1\\u0003\\u0002\\u0002\\u0002#\\u00b4\\u0003\\u0002\\u0002\\u0002%\\u00b6\",\n \"\\u0003\\u0002\\u0002\\u0002\\'\\u00b8\\u0003\\u0002\\u0002\\u0002)\\u00ba\\u0003\",\n \"\\u0002\\u0002\\u0002+\\u00bc\\u0003\\u0002\\u0002\\u0002-\\u00be\\u0003\\u0002\",\n \"\\u0002\\u0002/\\u00c0\\u0003\\u0002\\u0002\\u00021\\u00c2\\u0003\\u0002\\u0002\",\n \"\\u00023\\u00c4\\u0003\\u0002\\u0002\\u00025\\u00c6\\u0003\\u0002\\u0002\\u0002\",\n \"7\\u00c8\\u0003\\u0002\\u0002\\u00029\\u00ca\\u0003\\u0002\\u0002\\u0002;\\u00cc\",\n \"\\u0003\\u0002\\u0002\\u0002=\\u00ce\\u0003\\u0002\\u0002\\u0002?\\u00d0\\u0003\",\n \"\\u0002\\u0002\\u0002A\\u00d5\\u0003\\u0002\\u0002\\u0002C\\u00db\\u0003\\u0002\",\n \"\\u0002\\u0002E\\u00df\\u0003\\u0002\\u0002\\u0002G\\u00e2\\u0003\\u0002\\u0002\",\n \"\\u0002I\\u0101\\u0003\\u0002\\u0002\\u0002K\\u0103\\u0003\\u0002\\u0002\\u0002\",\n \"M\\u010a\\u0003\\u0002\\u0002\\u0002O\\u010e\\u0003\\u0002\\u0002\\u0002Q\\u0112\",\n \"\\u0003\\u0002\\u0002\\u0002S\\u0118\\u0003\\u0002\\u0002\\u0002U\\u011c\\u0003\",\n \"\\u0002\\u0002\\u0002W\\u011f\\u0003\\u0002\\u0002\\u0002Y\\u0123\\u0003\\u0002\",\n \"\\u0002\\u0002[\\u0129\\u0003\\u0002\\u0002\\u0002]\\u0131\\u0003\\u0002\\u0002\",\n \"\\u0002_\\u0144\\u0003\\u0002\\u0002\\u0002a\\u0160\\u0003\\u0002\\u0002\\u0002\",\n \"c\\u0162\\u0003\\u0002\\u0002\\u0002e\\u0169\\u0003\\u0002\\u0002\\u0002g\\u016b\",\n \"\\u0003\\u0002\\u0002\\u0002i\\u0173\\u0003\\u0002\\u0002\\u0002k\\u0189\\u0003\",\n \"\\u0002\\u0002\\u0002m\\u018b\\u0003\\u0002\\u0002\\u0002o\\u0197\\u0003\\u0002\",\n \"\\u0002\\u0002q\\u019b\\u0003\\u0002\\u0002\\u0002s\\u019f\\u0003\\u0002\\u0002\",\n \"\\u0002u\\u01ac\\u0003\\u0002\\u0002\\u0002w\\u01af\\u0003\\u0002\\u0002\\u0002\",\n \"y\\u01b3\\u0003\\u0002\\u0002\\u0002{\\u01b7\\u0003\\u0002\\u0002\\u0002}\\u01bc\",\n \"\\u0003\\u0002\\u0002\\u0002\\u007f\\u01c0\\u0003\\u0002\\u0002\\u0002\\u0081\\u0082\",\n \"\\u0007v\\u0002\\u0002\\u0082\\u0083\\u0007k\\u0002\\u0002\\u0083\\u0084\\u0007\",\n \"v\\u0002\\u0002\\u0084\\u0085\\u0007n\\u0002\\u0002\\u0085\\u0086\\u0007g\\u0002\",\n \"\\u0002\\u0086\\u0087\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\b\\u0002\\u0002\",\n \"\\u0002\\u0088\\u0006\\u0003\\u0002\\u0002\\u0002\\u0089\\u008a\\u0007<\\u0002\",\n \"\\u0002\\u008a\\u008b\\u0003\\u0002\\u0002\\u0002\\u008b\\u008c\\b\\u0003\\u0003\",\n \"\\u0002\\u008c\\b\\u0003\\u0002\\u0002\\u0002\\u008d\\u008e\\u0007>\\u0002\\u0002\",\n \"\\u008e\\u008f\\u0007>\\u0002\\u0002\\u008f\\n\\u0003\\u0002\\u0002\\u0002\\u0090\",\n \"\\u0091\\u0007@\\u0002\\u0002\\u0091\\u0092\\u0007@\\u0002\\u0002\\u0092\\f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0093\\u0094\\u0007/\\u0002\\u0002\\u0094\\u0095\\u0007\",\n \"@\\u0002\\u0002\\u0095\\u000e\\u0003\\u0002\\u0002\\u0002\\u0096\\u0097\\t\\u0002\",\n \"\\u0002\\u0002\\u0097\\u0010\\u0003\\u0002\\u0002\\u0002\\u0098\\u009a\\u0007%\",\n \"\\u0002\\u0002\\u0099\\u009b\\u0005\\u000f\\u0007\\u0002\\u009a\\u0099\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009b\\u009c\\u0003\\u0002\\u0002\\u0002\\u009c\\u009a\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009c\\u009d\\u0003\\u0002\\u0002\\u0002\\u009d\\u0012\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009e\\u009f\\u0007~\\u0002\\u0002\\u009f\\u00a0\\u0007~\\u0002\",\n \"\\u0002\\u00a0\\u0014\\u0003\\u0002\\u0002\\u0002\\u00a1\\u00a2\\u0007(\\u0002\",\n \"\\u0002\\u00a2\\u00a3\\u0007(\\u0002\\u0002\\u00a3\\u0016\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00a4\\u00a5\\u0007?\\u0002\\u0002\\u00a5\\u00a6\\u0007?\\u0002\\u0002\",\n \"\\u00a6\\u0018\\u0003\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0007#\\u0002\\u0002\",\n \"\\u00a8\\u00a9\\u0007?\\u0002\\u0002\\u00a9\\u001a\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00aa\\u00ab\\u0007@\\u0002\\u0002\\u00ab\\u001c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00ac\\u00ad\\u0007>\\u0002\\u0002\\u00ad\\u001e\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00ae\\u00af\\u0007@\\u0002\\u0002\\u00af\\u00b0\\u0007?\\u0002\\u0002\\u00b0\",\n \" \\u0003\\u0002\\u0002\\u0002\\u00b1\\u00b2\\u0007>\\u0002\\u0002\\u00b2\\u00b3\",\n \"\\u0007?\\u0002\\u0002\\u00b3\\\"\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b5\\u0007\",\n \"-\\u0002\\u0002\\u00b5$\\u0003\\u0002\\u0002\\u0002\\u00b6\\u00b7\\u0007/\\u0002\",\n \"\\u0002\\u00b7&\\u0003\\u0002\\u0002\\u0002\\u00b8\\u00b9\\u0007,\\u0002\\u0002\",\n \"\\u00b9(\\u0003\\u0002\\u0002\\u0002\\u00ba\\u00bb\\u00071\\u0002\\u0002\\u00bb\",\n \"*\\u0003\\u0002\\u0002\\u0002\\u00bc\\u00bd\\u0007\\'\\u0002\\u0002\\u00bd,\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00be\\u00bf\\u0007`\\u0002\\u0002\\u00bf.\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00c0\\u00c1\\u0007#\\u0002\\u0002\\u00c10\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c2\\u00c3\\u0007=\\u0002\\u0002\\u00c32\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00c4\\u00c5\\u0007.\\u0002\\u0002\\u00c54\\u0003\\u0002\\u0002\\u0002\\u00c6\",\n \"\\u00c7\\u0007?\\u0002\\u0002\\u00c76\\u0003\\u0002\\u0002\\u0002\\u00c8\\u00c9\",\n \"\\u0007*\\u0002\\u0002\\u00c98\\u0003\\u0002\\u0002\\u0002\\u00ca\\u00cb\\u0007\",\n \"+\\u0002\\u0002\\u00cb:\\u0003\\u0002\\u0002\\u0002\\u00cc\\u00cd\\u0007}\\u0002\",\n \"\\u0002\\u00cd<\\u0003\\u0002\\u0002\\u0002\\u00ce\\u00cf\\u0007\\u007f\\u0002\",\n \"\\u0002\\u00cf>\\u0003\\u0002\\u0002\\u0002\\u00d0\\u00d1\\u0007v\\u0002\\u0002\",\n \"\\u00d1\\u00d2\\u0007t\\u0002\\u0002\\u00d2\\u00d3\\u0007w\\u0002\\u0002\\u00d3\",\n \"\\u00d4\\u0007g\\u0002\\u0002\\u00d4@\\u0003\\u0002\\u0002\\u0002\\u00d5\\u00d6\",\n \"\\u0007h\\u0002\\u0002\\u00d6\\u00d7\\u0007c\\u0002\\u0002\\u00d7\\u00d8\\u0007\",\n \"n\\u0002\\u0002\\u00d8\\u00d9\\u0007u\\u0002\\u0002\\u00d9\\u00da\\u0007g\\u0002\",\n \"\\u0002\\u00daB\\u0003\\u0002\\u0002\\u0002\\u00db\\u00dc\\u0007p\\u0002\\u0002\",\n \"\\u00dc\\u00dd\\u0007k\\u0002\\u0002\\u00dd\\u00de\\u0007n\\u0002\\u0002\\u00de\",\n \"D\\u0003\\u0002\\u0002\\u0002\\u00df\\u00e0\\u0007k\\u0002\\u0002\\u00e0\\u00e1\",\n \"\\u0007h\\u0002\\u0002\\u00e1F\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\u0007\",\n \"g\\u0002\\u0002\\u00e3\\u00e4\\u0007n\\u0002\\u0002\\u00e4\\u00e5\\u0007u\\u0002\",\n \"\\u0002\\u00e5\\u00e6\\u0007g\\u0002\\u0002\\u00e6H\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00e7\\u00e8\\u0007y\\u0002\\u0002\\u00e8\\u00e9\\u0007j\\u0002\\u0002\\u00e9\",\n \"\\u00ea\\u0007k\\u0002\\u0002\\u00ea\\u00eb\\u0007n\\u0002\\u0002\\u00eb\\u0102\",\n \"\\u0007g\\u0002\\u0002\\u00ec\\u00ed\\u0007h\\u0002\\u0002\\u00ed\\u00ee\\u0007\",\n \"q\\u0002\\u0002\\u00ee\\u0102\\u0007t\\u0002\\u0002\\u00ef\\u00f0\\u0007h\\u0002\",\n \"\\u0002\\u00f0\\u00f1\\u0007q\\u0002\\u0002\\u00f1\\u00f2\\u0007t\\u0002\\u0002\",\n \"\\u00f2\\u00f3\\u0007g\\u0002\\u0002\\u00f3\\u00f4\\u0007c\\u0002\\u0002\\u00f4\",\n \"\\u00f5\\u0007e\\u0002\\u0002\\u00f5\\u0102\\u0007j\\u0002\\u0002\\u00f6\\u00f7\",\n \"\\u0007h\\u0002\\u0002\\u00f7\\u00f8\\u0007q\\u0002\\u0002\\u00f8\\u00f9\\u0007\",\n \"t\\u0002\\u0002\\u00f9\\u00fa\\u0007G\\u0002\\u0002\\u00fa\\u00fb\\u0007c\\u0002\",\n \"\\u0002\\u00fb\\u00fc\\u0007e\\u0002\\u0002\\u00fc\\u0102\\u0007j\\u0002\\u0002\",\n \"\\u00fd\\u00fe\\u0007n\\u0002\\u0002\\u00fe\\u00ff\\u0007q\\u0002\\u0002\\u00ff\",\n \"\\u0100\\u0007q\\u0002\\u0002\\u0100\\u0102\\u0007r\\u0002\\u0002\\u0101\\u00e7\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0101\\u00ec\\u0003\\u0002\\u0002\\u0002\\u0101\\u00ef\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0101\\u00f6\\u0003\\u0002\\u0002\\u0002\\u0101\\u00fd\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0102J\\u0003\\u0002\\u0002\\u0002\\u0103\\u0104\",\n \"\\u0007t\\u0002\\u0002\\u0104\\u0105\\u0007g\\u0002\\u0002\\u0105\\u0106\\u0007\",\n \"v\\u0002\\u0002\\u0106\\u0107\\u0007w\\u0002\\u0002\\u0107\\u0108\\u0007t\\u0002\",\n \"\\u0002\\u0108\\u0109\\u0007p\\u0002\\u0002\\u0109L\\u0003\\u0002\\u0002\\u0002\",\n \"\\u010a\\u010b\\u0007p\\u0002\\u0002\\u010b\\u010c\\u0007g\\u0002\\u0002\\u010c\",\n \"\\u010d\\u0007y\\u0002\\u0002\\u010dN\\u0003\\u0002\\u0002\\u0002\\u010e\\u010f\",\n \"\\u0007r\\u0002\\u0002\\u010f\\u0110\\u0007c\\u0002\\u0002\\u0110\\u0111\\u0007\",\n \"t\\u0002\\u0002\\u0111P\\u0003\\u0002\\u0002\\u0002\\u0112\\u0113\\u0007i\\u0002\",\n \"\\u0002\\u0113\\u0114\\u0007t\\u0002\\u0002\\u0114\\u0115\\u0007q\\u0002\\u0002\",\n \"\\u0115\\u0116\\u0007w\\u0002\\u0002\\u0116\\u0117\\u0007r\\u0002\\u0002\\u0117\",\n \"R\\u0003\\u0002\\u0002\\u0002\\u0118\\u0119\\u0007q\\u0002\\u0002\\u0119\\u011a\",\n \"\\u0007r\\u0002\\u0002\\u011a\\u011b\\u0007v\\u0002\\u0002\\u011bT\\u0003\\u0002\",\n \"\\u0002\\u0002\\u011c\\u011d\\u0007c\\u0002\\u0002\\u011d\\u011e\\u0007u\\u0002\",\n \"\\u0002\\u011eV\\u0003\\u0002\\u0002\\u0002\\u011f\\u0120\\u0007v\\u0002\\u0002\",\n \"\\u0120\\u0121\\u0007t\\u0002\\u0002\\u0121\\u0122\\u0007{\\u0002\\u0002\\u0122\",\n \"X\\u0003\\u0002\\u0002\\u0002\\u0123\\u0124\\u0007e\\u0002\\u0002\\u0124\\u0125\",\n \"\\u0007c\\u0002\\u0002\\u0125\\u0126\\u0007v\\u0002\\u0002\\u0126\\u0127\\u0007\",\n \"e\\u0002\\u0002\\u0127\\u0128\\u0007j\\u0002\\u0002\\u0128Z\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0129\\u012a\\u0007h\\u0002\\u0002\\u012a\\u012b\\u0007k\\u0002\\u0002\",\n \"\\u012b\\u012c\\u0007p\\u0002\\u0002\\u012c\\u012d\\u0007c\\u0002\\u0002\\u012d\",\n \"\\u012e\\u0007n\\u0002\\u0002\\u012e\\u012f\\u0007n\\u0002\\u0002\\u012f\\u0130\",\n \"\\u0007{\\u0002\\u0002\\u0130\\\\\\u0003\\u0002\\u0002\\u0002\\u0131\\u0132\\u0007\",\n \"k\\u0002\\u0002\\u0132\\u0133\\u0007p\\u0002\\u0002\\u0133^\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0134\\u0135\\u0007B\\u0002\\u0002\\u0135\\u0136\\u0007U\\u0002\\u0002\",\n \"\\u0136\\u0137\\u0007v\\u0002\\u0002\\u0137\\u0138\\u0007c\\u0002\\u0002\\u0138\",\n \"\\u0139\\u0007t\\u0002\\u0002\\u0139\\u013a\\u0007v\\u0002\\u0002\\u013a\\u013b\",\n \"\\u0007g\\u0002\\u0002\\u013b\\u0145\\u0007t\\u0002\\u0002\\u013c\\u013d\\u0007\",\n \"B\\u0002\\u0002\\u013d\\u013e\\u0007u\\u0002\\u0002\\u013e\\u013f\\u0007v\\u0002\",\n \"\\u0002\\u013f\\u0140\\u0007c\\u0002\\u0002\\u0140\\u0141\\u0007t\\u0002\\u0002\",\n \"\\u0141\\u0142\\u0007v\\u0002\\u0002\\u0142\\u0143\\u0007g\\u0002\\u0002\\u0143\",\n \"\\u0145\\u0007t\\u0002\\u0002\\u0144\\u0134\\u0003\\u0002\\u0002\\u0002\\u0144\",\n \"\\u013c\\u0003\\u0002\\u0002\\u0002\\u0145`\\u0003\\u0002\\u0002\\u0002\\u0146\",\n \"\\u0147\\u0007B\\u0002\\u0002\\u0147\\u0148\\u0007T\\u0002\\u0002\\u0148\\u0149\",\n \"\\u0007g\\u0002\\u0002\\u0149\\u014a\\u0007v\\u0002\\u0002\\u014a\\u014b\\u0007\",\n \"w\\u0002\\u0002\\u014b\\u014c\\u0007t\\u0002\\u0002\\u014c\\u0161\\u0007p\\u0002\",\n \"\\u0002\\u014d\\u014e\\u0007B\\u0002\\u0002\\u014e\\u014f\\u0007t\\u0002\\u0002\",\n \"\\u014f\\u0150\\u0007g\\u0002\\u0002\\u0150\\u0151\\u0007v\\u0002\\u0002\\u0151\",\n \"\\u0152\\u0007w\\u0002\\u0002\\u0152\\u0153\\u0007t\\u0002\\u0002\\u0153\\u0161\",\n \"\\u0007p\\u0002\\u0002\\u0154\\u0155\\u0007B\\u0002\\u0002\\u0155\\u0156\\u0007\",\n \"T\\u0002\\u0002\\u0156\\u0157\\u0007g\\u0002\\u0002\\u0157\\u0158\\u0007r\\u0002\",\n \"\\u0002\\u0158\\u0159\\u0007n\\u0002\\u0002\\u0159\\u0161\\u0007{\\u0002\\u0002\",\n \"\\u015a\\u015b\\u0007B\\u0002\\u0002\\u015b\\u015c\\u0007t\\u0002\\u0002\\u015c\",\n \"\\u015d\\u0007g\\u0002\\u0002\\u015d\\u015e\\u0007r\\u0002\\u0002\\u015e\\u015f\",\n \"\\u0007n\\u0002\\u0002\\u015f\\u0161\\u0007{\\u0002\\u0002\\u0160\\u0146\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u014d\\u0003\\u0002\\u0002\\u0002\\u0160\\u0154\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0160\\u015a\\u0003\\u0002\\u0002\\u0002\\u0161b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0162\\u0166\\u0007B\\u0002\\u0002\\u0163\\u0165\\t\\u0003\",\n \"\\u0002\\u0002\\u0164\\u0163\\u0003\\u0002\\u0002\\u0002\\u0165\\u0168\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0166\\u0164\\u0003\\u0002\\u0002\\u0002\\u0166\\u0167\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0167d\\u0003\\u0002\\u0002\\u0002\\u0168\\u0166\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0169\\u016a\\u00070\\u0002\\u0002\\u016af\\u0003\\u0002\\u0002\",\n \"\\u0002\\u016b\\u016f\\t\\u0004\\u0002\\u0002\\u016c\\u016e\\t\\u0003\\u0002\\u0002\",\n \"\\u016d\\u016c\\u0003\\u0002\\u0002\\u0002\\u016e\\u0171\\u0003\\u0002\\u0002\\u0002\",\n \"\\u016f\\u016d\\u0003\\u0002\\u0002\\u0002\\u016f\\u0170\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0170h\\u0003\\u0002\\u0002\\u0002\\u0171\\u016f\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0172\\u0174\\t\\u0005\\u0002\\u0002\\u0173\\u0172\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0174\\u0175\\u0003\\u0002\\u0002\\u0002\\u0175\\u0173\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0175\\u0176\\u0003\\u0002\\u0002\\u0002\\u0176j\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0177\\u0179\\t\\u0005\\u0002\\u0002\\u0178\\u0177\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0179\\u017a\\u0003\\u0002\\u0002\\u0002\\u017a\\u0178\\u0003\\u0002\\u0002\\u0002\",\n \"\\u017a\\u017b\\u0003\\u0002\\u0002\\u0002\\u017b\\u017c\\u0003\\u0002\\u0002\\u0002\",\n \"\\u017c\\u0180\\u00070\\u0002\\u0002\\u017d\\u017f\\t\\u0005\\u0002\\u0002\\u017e\",\n \"\\u017d\\u0003\\u0002\\u0002\\u0002\\u017f\\u0182\\u0003\\u0002\\u0002\\u0002\\u0180\",\n \"\\u017e\\u0003\\u0002\\u0002\\u0002\\u0180\\u0181\\u0003\\u0002\\u0002\\u0002\\u0181\",\n \"\\u018a\\u0003\\u0002\\u0002\\u0002\\u0182\\u0180\\u0003\\u0002\\u0002\\u0002\\u0183\",\n \"\\u0185\\u00070\\u0002\\u0002\\u0184\\u0186\\t\\u0005\\u0002\\u0002\\u0185\\u0184\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0186\\u0187\\u0003\\u0002\\u0002\\u0002\\u0187\\u0185\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0187\\u0188\\u0003\\u0002\\u0002\\u0002\\u0188\\u018a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0189\\u0178\\u0003\\u0002\\u0002\\u0002\\u0189\\u0183\",\n \"\\u0003\\u0002\\u0002\\u0002\\u018al\\u0003\\u0002\\u0002\\u0002\\u018b\\u0191\",\n \"\\u0007$\\u0002\\u0002\\u018c\\u0190\\n\\u0006\\u0002\\u0002\\u018d\\u018e\\u0007\",\n \"$\\u0002\\u0002\\u018e\\u0190\\u0007$\\u0002\\u0002\\u018f\\u018c\\u0003\\u0002\",\n \"\\u0002\\u0002\\u018f\\u018d\\u0003\\u0002\\u0002\\u0002\\u0190\\u0193\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0191\\u018f\\u0003\\u0002\\u0002\\u0002\\u0191\\u0192\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0192\\u0195\\u0003\\u0002\\u0002\\u0002\\u0193\\u0191\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0194\\u0196\\t\\u0006\\u0002\\u0002\\u0195\\u0194\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0195\\u0196\\u0003\\u0002\\u0002\\u0002\\u0196n\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0197\\u0198\\t\\u0007\\u0002\\u0002\\u0198\\u0199\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0199\\u019a\\b7\\u0004\\u0002\\u019ap\\u0003\\u0002\\u0002\\u0002\",\n \"\\u019b\\u019c\\t\\b\\u0002\\u0002\\u019c\\u019d\\u0003\\u0002\\u0002\\u0002\\u019d\",\n \"\\u019e\\b8\\u0004\\u0002\\u019er\\u0003\\u0002\\u0002\\u0002\\u019f\\u01a0\\u0007\",\n \"1\\u0002\\u0002\\u01a0\\u01a1\\u00071\\u0002\\u0002\\u01a1\\u01a5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a2\\u01a4\\u000b\\u0002\\u0002\\u0002\\u01a3\\u01a2\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a4\\u01a7\\u0003\\u0002\\u0002\\u0002\\u01a5\\u01a6\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a5\\u01a3\\u0003\\u0002\\u0002\\u0002\\u01a6\\u01a8\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01a7\\u01a5\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01a9\\u0007\\f\",\n \"\\u0002\\u0002\\u01a9\\u01aa\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01ab\\b9\\u0005\",\n \"\\u0002\\u01abt\\u0003\\u0002\\u0002\\u0002\\u01ac\\u01ad\\u000b\\u0002\\u0002\",\n \"\\u0002\\u01adv\\u0003\\u0002\\u0002\\u0002\\u01ae\\u01b0\\n\\u0007\\u0002\\u0002\",\n \"\\u01af\\u01ae\\u0003\\u0002\\u0002\\u0002\\u01b0\\u01b1\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01b1\\u01af\\u0003\\u0002\\u0002\\u0002\\u01b1\\u01b2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01b2x\\u0003\\u0002\\u0002\\u0002\\u01b3\\u01b4\\t\\u0007\\u0002\\u0002\\u01b4\",\n \"\\u01b5\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\b<\\u0006\\u0002\\u01b6z\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01b7\\u01b8\\t\\t\\u0002\\u0002\\u01b8\\u01b9\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b9\\u01ba\\b=\\u0004\\u0002\\u01ba|\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bb\\u01bd\\n\\u0007\\u0002\\u0002\\u01bc\\u01bb\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bd\\u01be\\u0003\\u0002\\u0002\\u0002\\u01be\\u01bc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01be\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bf~\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c0\\u01c1\\t\\u0007\\u0002\\u0002\\u01c1\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c2\\u01c3\\b?\\u0006\\u0002\\u01c3\\u0080\\u0003\\u0002\\u0002\\u0002\\u0016\",\n \"\\u0002\\u0003\\u0004\\u009c\\u0101\\u0144\\u0160\\u0166\\u016f\\u0175\\u017a\\u0180\",\n \"\\u0187\\u0189\\u018f\\u0191\\u0195\\u01a5\\u01b1\\u01be\\u0007\\u0007\\u0004\\u0002\",\n \"\\u0007\\u0003\\u0002\\u0002\\u0003\\u0002\\u0002\\u0004\\u0002\\u0006\\u0002\\u0002\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nfunction sequenceLexer(input) {\n\tantlr4.Lexer.call(this, input);\n this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache());\n return this;\n}\n\nsequenceLexer.prototype = Object.create(antlr4.Lexer.prototype);\nsequenceLexer.prototype.constructor = sequenceLexer;\n\nObject.defineProperty(sequenceLexer.prototype, \"atn\", {\n get : function() {\n return atn;\n }\n});\n\nsequenceLexer.EOF = antlr4.Token.EOF;\nsequenceLexer.TITLE = 1;\nsequenceLexer.COL = 2;\nsequenceLexer.SOPEN = 3;\nsequenceLexer.SCLOSE = 4;\nsequenceLexer.ARROW = 5;\nsequenceLexer.COLOR = 6;\nsequenceLexer.OR = 7;\nsequenceLexer.AND = 8;\nsequenceLexer.EQ = 9;\nsequenceLexer.NEQ = 10;\nsequenceLexer.GT = 11;\nsequenceLexer.LT = 12;\nsequenceLexer.GTEQ = 13;\nsequenceLexer.LTEQ = 14;\nsequenceLexer.PLUS = 15;\nsequenceLexer.MINUS = 16;\nsequenceLexer.MULT = 17;\nsequenceLexer.DIV = 18;\nsequenceLexer.MOD = 19;\nsequenceLexer.POW = 20;\nsequenceLexer.NOT = 21;\nsequenceLexer.SCOL = 22;\nsequenceLexer.COMMA = 23;\nsequenceLexer.ASSIGN = 24;\nsequenceLexer.OPAR = 25;\nsequenceLexer.CPAR = 26;\nsequenceLexer.OBRACE = 27;\nsequenceLexer.CBRACE = 28;\nsequenceLexer.TRUE = 29;\nsequenceLexer.FALSE = 30;\nsequenceLexer.NIL = 31;\nsequenceLexer.IF = 32;\nsequenceLexer.ELSE = 33;\nsequenceLexer.WHILE = 34;\nsequenceLexer.RETURN = 35;\nsequenceLexer.NEW = 36;\nsequenceLexer.PAR = 37;\nsequenceLexer.GROUP = 38;\nsequenceLexer.OPT = 39;\nsequenceLexer.AS = 40;\nsequenceLexer.TRY = 41;\nsequenceLexer.CATCH = 42;\nsequenceLexer.FINALLY = 43;\nsequenceLexer.IN = 44;\nsequenceLexer.STARTER_LXR = 45;\nsequenceLexer.ANNOTATION_RET = 46;\nsequenceLexer.ANNOTATION = 47;\nsequenceLexer.DOT = 48;\nsequenceLexer.ID = 49;\nsequenceLexer.INT = 50;\nsequenceLexer.FLOAT = 51;\nsequenceLexer.STRING = 52;\nsequenceLexer.CR = 53;\nsequenceLexer.SPACE = 54;\nsequenceLexer.COMMENT = 55;\nsequenceLexer.OTHER = 56;\nsequenceLexer.EVENT_PAYLOAD_LXR = 57;\nsequenceLexer.EVENT_END = 58;\nsequenceLexer.WS = 59;\nsequenceLexer.TITLE_CONTENT = 60;\nsequenceLexer.TITLE_END = 61;\n\nsequenceLexer.COMMENT_CHANNEL = 2;\n\nsequenceLexer.EVENT = 1;\nsequenceLexer.TITLE_MODE = 2;\n\nsequenceLexer.prototype.channelNames = [ \"DEFAULT_TOKEN_CHANNEL\", \"HIDDEN\", \n \"COMMENT_CHANNEL\" ];\n\nsequenceLexer.prototype.modeNames = [ \"DEFAULT_MODE\", \"EVENT\", \"TITLE_MODE\" ];\n\nsequenceLexer.prototype.literalNames = [ null, \"'title'\", \"':'\", \"'<<'\", \n \"'>>'\", \"'->'\", null, \"'||'\", \"'&&'\", \n \"'=='\", \"'!='\", \"'>'\", \"'<'\", \"'>='\", \n \"'<='\", \"'+'\", \"'-'\", \"'*'\", \"'/'\", \n \"'%'\", \"'^'\", \"'!'\", \"';'\", \"','\", \n \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \n \"'true'\", \"'false'\", \"'nil'\", \"'if'\", \n \"'else'\", null, \"'return'\", \"'new'\", \n \"'par'\", \"'group'\", \"'opt'\", \"'as'\", \n \"'try'\", \"'catch'\", \"'finally'\", \n \"'in'\", null, null, null, \"'.'\" ];\n\nsequenceLexer.prototype.symbolicNames = [ null, \"TITLE\", \"COL\", \"SOPEN\", \n \"SCLOSE\", \"ARROW\", \"COLOR\", \"OR\", \n \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \n \"GTEQ\", \"LTEQ\", \"PLUS\", \"MINUS\", \n \"MULT\", \"DIV\", \"MOD\", \"POW\", \"NOT\", \n \"SCOL\", \"COMMA\", \"ASSIGN\", \"OPAR\", \n \"CPAR\", \"OBRACE\", \"CBRACE\", \"TRUE\", \n \"FALSE\", \"NIL\", \"IF\", \"ELSE\", \n \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \n \"GROUP\", \"OPT\", \"AS\", \"TRY\", \"CATCH\", \n \"FINALLY\", \"IN\", \"STARTER_LXR\", \n \"ANNOTATION_RET\", \"ANNOTATION\", \n \"DOT\", \"ID\", \"INT\", \"FLOAT\", \"STRING\", \n \"CR\", \"SPACE\", \"COMMENT\", \"OTHER\", \n \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \n \"WS\", \"TITLE_CONTENT\", \"TITLE_END\" ];\n\nsequenceLexer.prototype.ruleNames = [ \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \n \"ARROW\", \"HEX\", \"COLOR\", \"OR\", \"AND\", \n \"EQ\", \"NEQ\", \"GT\", \"LT\", \"GTEQ\", \"LTEQ\", \n \"PLUS\", \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \n \"POW\", \"NOT\", \"SCOL\", \"COMMA\", \"ASSIGN\", \n \"OPAR\", \"CPAR\", \"OBRACE\", \"CBRACE\", \n \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \"ELSE\", \n \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \"GROUP\", \n \"OPT\", \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \n \"IN\", \"STARTER_LXR\", \"ANNOTATION_RET\", \n \"ANNOTATION\", \"DOT\", \"ID\", \"INT\", \n \"FLOAT\", \"STRING\", \"CR\", \"SPACE\", \n \"COMMENT\", \"OTHER\", \"EVENT_PAYLOAD_LXR\", \n \"EVENT_END\", \"WS\", \"TITLE_CONTENT\", \n \"TITLE_END\" ];\n\nsequenceLexer.prototype.grammarFileName = \"sequenceLexer.g4\";\n\n\nexports.sequenceLexer = sequenceLexer;\n\n","// Generated from sequenceParser.g4 by ANTLR 4.8\n// jshint ignore: start\nvar antlr4 = require('antlr4/index');\nvar sequenceParserListener = require('./sequenceParserListener').sequenceParserListener;\nvar grammarFileName = \"sequenceParser.g4\";\n\n\nvar serializedATN = [\"\\u0003\\u608b\\ua72a\\u8133\\ub9ed\\u417c\\u3be7\\u7786\\u5964\",\n \"\\u0003?\\u022b\\u0004\\u0002\\t\\u0002\\u0004\\u0003\\t\\u0003\\u0004\\u0004\\t\",\n \"\\u0004\\u0004\\u0005\\t\\u0005\\u0004\\u0006\\t\\u0006\\u0004\\u0007\\t\\u0007\\u0004\",\n \"\\b\\t\\b\\u0004\\t\\t\\t\\u0004\\n\\t\\n\\u0004\\u000b\\t\\u000b\\u0004\\f\\t\\f\\u0004\",\n \"\\r\\t\\r\\u0004\\u000e\\t\\u000e\\u0004\\u000f\\t\\u000f\\u0004\\u0010\\t\\u0010\\u0004\",\n \"\\u0011\\t\\u0011\\u0004\\u0012\\t\\u0012\\u0004\\u0013\\t\\u0013\\u0004\\u0014\\t\",\n \"\\u0014\\u0004\\u0015\\t\\u0015\\u0004\\u0016\\t\\u0016\\u0004\\u0017\\t\\u0017\\u0004\",\n \"\\u0018\\t\\u0018\\u0004\\u0019\\t\\u0019\\u0004\\u001a\\t\\u001a\\u0004\\u001b\\t\",\n \"\\u001b\\u0004\\u001c\\t\\u001c\\u0004\\u001d\\t\\u001d\\u0004\\u001e\\t\\u001e\\u0004\",\n \"\\u001f\\t\\u001f\\u0004 \\t \\u0004!\\t!\\u0004\\\"\\t\\\"\\u0004#\\t#\\u0004$\\t$\\u0004\",\n \"%\\t%\\u0004&\\t&\\u0004\\'\\t\\'\\u0004(\\t(\\u0004)\\t)\\u0004*\\t*\\u0004+\\t+\\u0004\",\n \",\\t,\\u0004-\\t-\\u0004.\\t.\\u0004/\\t/\\u00040\\t0\\u00041\\t1\\u00042\\t2\\u0004\",\n \"3\\t3\\u00044\\t4\\u00045\\t5\\u0003\\u0002\\u0005\\u0002l\\n\\u0002\\u0003\\u0002\",\n \"\\u0003\\u0002\\u0005\\u0002p\\n\\u0002\\u0003\\u0002\\u0003\\u0002\\u0003\\u0002\",\n \"\\u0003\\u0002\\u0005\\u0002v\\n\\u0002\\u0003\\u0002\\u0005\\u0002y\\n\\u0002\\u0003\",\n \"\\u0002\\u0003\\u0002\\u0003\\u0002\\u0005\\u0002~\\n\\u0002\\u0003\\u0003\\u0003\",\n \"\\u0003\\u0003\\u0003\\u0005\\u0003\\u0083\\n\\u0003\\u0003\\u0004\\u0003\\u0004\",\n \"\\u0006\\u0004\\u0087\\n\\u0004\\r\\u0004\\u000e\\u0004\\u0088\\u0003\\u0004\\u0003\",\n \"\\u0004\\u0007\\u0004\\u008d\\n\\u0004\\f\\u0004\\u000e\\u0004\\u0090\\u000b\\u0004\",\n \"\\u0003\\u0004\\u0005\\u0004\\u0093\\n\\u0004\\u0003\\u0005\\u0003\\u0005\\u0005\",\n \"\\u0005\\u0097\\n\\u0005\\u0003\\u0005\\u0003\\u0005\\u0007\\u0005\\u009b\\n\\u0005\",\n \"\\f\\u0005\\u000e\\u0005\\u009e\\u000b\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\",\n \"\\u0005\\u0005\\u0005\\u00a3\\n\\u0005\\u0003\\u0005\\u0003\\u0005\\u0003\\u0005\",\n \"\\u0005\\u0005\\u00a8\\n\\u0005\\u0005\\u0005\\u00aa\\n\\u0005\\u0003\\u0006\\u0003\",\n \"\\u0006\\u0003\\u0006\\u0005\\u0006\\u00af\\n\\u0006\\u0003\\u0006\\u0005\\u0006\",\n \"\\u00b2\\n\\u0006\\u0003\\u0006\\u0005\\u0006\\u00b5\\n\\u0006\\u0003\\u0007\\u0003\",\n \"\\u0007\\u0003\\b\\u0005\\b\\u00ba\\n\\b\\u0003\\b\\u0005\\b\\u00bd\\n\\b\\u0003\\b\\u0003\",\n \"\\b\\u0005\\b\\u00c1\\n\\b\\u0003\\b\\u0005\\b\\u00c4\\n\\b\\u0003\\b\\u0005\\b\\u00c7\",\n \"\\n\\b\\u0003\\b\\u0003\\b\\u0005\\b\\u00cb\\n\\b\\u0003\\t\\u0003\\t\\u0003\\t\\u0003\",\n \"\\t\\u0003\\t\\u0003\\t\\u0003\\t\\u0005\\t\\u00d4\\n\\t\\u0003\\t\\u0003\\t\\u0005\\t\",\n \"\\u00d8\\n\\t\\u0005\\t\\u00da\\n\\t\\u0003\\n\\u0003\\n\\u0003\\n\\u0005\\n\\u00df\\n\",\n \"\\n\\u0003\\u000b\\u0003\\u000b\\u0003\\f\\u0003\\f\\u0003\\r\\u0003\\r\\u0003\\u000e\",\n \"\\u0006\\u000e\\u00e8\\n\\u000e\\r\\u000e\\u000e\\u000e\\u00e9\\u0003\\u000f\\u0003\",\n \"\\u000f\\u0005\\u000f\\u00ee\\n\\u000f\\u0003\\u000f\\u0005\\u000f\\u00f1\\n\\u000f\",\n \"\\u0003\\u000f\\u0003\\u000f\\u0003\\u000f\\u0005\\u000f\\u00f6\\n\\u000f\\u0005\",\n \"\\u000f\\u00f8\\n\\u000f\\u0003\\u0010\\u0003\\u0010\\u0007\\u0010\\u00fc\\n\\u0010\",\n \"\\f\\u0010\\u000e\\u0010\\u00ff\\u000b\\u0010\\u0003\\u0010\\u0003\\u0010\\u0003\",\n \"\\u0010\\u0007\\u0010\\u0104\\n\\u0010\\f\\u0010\\u000e\\u0010\\u0107\\u000b\\u0010\",\n \"\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\",\n \"\\u0003\\u0011\\u0003\\u0011\\u0005\\u0011\\u0111\\n\\u0011\\u0003\\u0011\\u0003\",\n \"\\u0011\\u0003\\u0011\\u0003\\u0011\\u0003\\u0011\\u0005\\u0011\\u0118\\n\\u0011\",\n \"\\u0003\\u0012\\u0003\\u0012\\u0003\\u0012\\u0005\\u0012\\u011d\\n\\u0012\\u0003\",\n \"\\u0013\\u0003\\u0013\\u0003\\u0013\\u0005\\u0013\\u0122\\n\\u0013\\u0003\\u0014\",\n \"\\u0003\\u0014\\u0003\\u0014\\u0005\\u0014\\u0127\\n\\u0014\\u0003\\u0015\\u0005\",\n \"\\u0015\\u012a\\n\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\\u0003\\u0015\",\n \"\\u0005\\u0015\\u0130\\n\\u0015\\u0003\\u0015\\u0005\\u0015\\u0133\\n\\u0015\\u0003\",\n \"\\u0016\\u0003\\u0016\\u0003\\u0016\\u0005\\u0016\\u0138\\n\\u0016\\u0003\\u0017\",\n \"\\u0005\\u0017\\u013b\\n\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0005\",\n \"\\u0017\\u0140\\n\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0005\\u0017\",\n \"\\u0145\\n\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\",\n \"\\u0017\\u0005\\u0017\\u014c\\n\\u0017\\u0003\\u0017\\u0003\\u0017\\u0003\\u0017\",\n \"\\u0005\\u0017\\u0151\\n\\u0017\\u0003\\u0018\\u0003\\u0018\\u0003\\u0018\\u0007\",\n \"\\u0018\\u0156\\n\\u0018\\f\\u0018\\u000e\\u0018\\u0159\\u000b\\u0018\\u0003\\u0019\",\n \"\\u0003\\u0019\\u0003\\u001a\\u0003\\u001a\\u0003\\u001b\\u0003\\u001b\\u0005\\u001b\",\n \"\\u0161\\n\\u001b\\u0003\\u001c\\u0003\\u001c\\u0005\\u001c\\u0165\\n\\u001c\\u0003\",\n \"\\u001c\\u0003\\u001c\\u0003\\u001d\\u0005\\u001d\\u016a\\n\\u001d\\u0003\\u001d\",\n \"\\u0003\\u001d\\u0003\\u001d\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0005\\u001e\",\n \"\\u0172\\n\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\\u001e\\u0003\",\n \"\\u001e\\u0003\\u001e\\u0003\\u001e\\u0005\\u001e\\u017b\\n\\u001e\\u0005\\u001e\",\n \"\\u017d\\n\\u001e\\u0003\\u001f\\u0003\\u001f\\u0003 \\u0003 \\u0003!\\u0003!\\u0003\",\n \"\\\"\\u0003\\\"\\u0003\\\"\\u0003\\\"\\u0007\\\"\\u0189\\n\\\"\\f\\\"\\u000e\\\"\\u018c\\u000b\",\n \"\\\"\\u0003\\\"\\u0005\\\"\\u018f\\n\\\"\\u0003#\\u0003#\\u0003$\\u0003$\\u0003$\\u0007\",\n \"$\\u0196\\n$\\f$\\u000e$\\u0199\\u000b$\\u0003$\\u0005$\\u019c\\n$\\u0003%\\u0003\",\n \"%\\u0005%\\u01a0\\n%\\u0003&\\u0003&\\u0003&\\u0003\\'\\u0003\\'\\u0007\\'\\u01a7\",\n \"\\n\\'\\f\\'\\u000e\\'\\u01aa\\u000b\\'\\u0003\\'\\u0005\\'\\u01ad\\n\\'\\u0003(\\u0003\",\n \"(\\u0003(\\u0003)\\u0003)\\u0005)\\u01b4\\n)\\u0003)\\u0003)\\u0003*\\u0003*\\u0003\",\n \"*\\u0003+\\u0003+\\u0007+\\u01bd\\n+\\f+\\u000e+\\u01c0\\u000b+\\u0003+\\u0005\",\n \"+\\u01c3\\n+\\u0003,\\u0003,\\u0003,\\u0003,\\u0003-\\u0003-\\u0003-\\u0003-\\u0003\",\n \"-\\u0003.\\u0003.\\u0003.\\u0003/\\u0003/\\u0005/\\u01d3\\n/\\u0003/\\u0003/\\u0003\",\n \"0\\u00030\\u00030\\u00030\\u00030\\u00030\\u00030\\u00050\\u01de\\n0\\u00031\\u0003\",\n \"1\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00051\\u01e8\\n1\\u00031\\u0003\",\n \"1\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00051\\u01f4\",\n \"\\n1\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"1\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u00031\\u0003\",\n \"1\\u00031\\u00071\\u020b\\n1\\f1\\u000e1\\u020e\\u000b1\\u00032\\u00032\\u0003\",\n \"2\\u00032\\u00032\\u00052\\u0215\\n2\\u00033\\u00033\\u00033\\u00033\\u00033\\u0003\",\n \"3\\u00033\\u00033\\u00033\\u00053\\u0220\\n3\\u00034\\u00034\\u00034\\u00054\\u0225\",\n \"\\n4\\u00035\\u00035\\u00035\\u00035\\u00035\\u0002\\u0003`6\\u0002\\u0004\\u0006\",\n \"\\b\\n\\f\\u000e\\u0010\\u0012\\u0014\\u0016\\u0018\\u001a\\u001c\\u001e \\\"$&(*\",\n \",.02468:<>@BDFHJLNPRTVXZ\\\\^`bdfh\\u0002\\r\\u0004\\u00023366\\u0004\\u0002\",\n \"\\u0005\\u0005\\u000e\\u000e\\u0004\\u0002\\u0006\\u0006\\r\\r\\u0004\\u0002\\u000b\",\n \"\\u000b\\u001a\\u001a\\u0004\\u0002\\u0007\\u0007\\u0012\\u0012\\u0003\\u0002\\u0013\",\n \"\\u0015\\u0003\\u0002\\u0011\\u0012\\u0003\\u0002\\r\\u0010\\u0003\\u0002\\u000b\",\n \"\\f\\u0003\\u000245\\u0003\\u0002\\u001f \\u0002\\u0264\\u0002}\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0004\\u007f\\u0003\\u0002\\u0002\\u0002\\u0006\\u0092\\u0003\\u0002\\u0002\",\n \"\\u0002\\b\\u00a9\\u0003\\u0002\\u0002\\u0002\\n\\u00b4\\u0003\\u0002\\u0002\\u0002\",\n \"\\f\\u00b6\\u0003\\u0002\\u0002\\u0002\\u000e\\u00ca\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0010\\u00d9\\u0003\\u0002\\u0002\\u0002\\u0012\\u00de\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0014\\u00e0\\u0003\\u0002\\u0002\\u0002\\u0016\\u00e2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0018\\u00e4\\u0003\\u0002\\u0002\\u0002\\u001a\\u00e7\\u0003\\u0002\\u0002\\u0002\",\n \"\\u001c\\u00f7\\u0003\\u0002\\u0002\\u0002\\u001e\\u00f9\\u0003\\u0002\\u0002\\u0002\",\n \" \\u0117\\u0003\\u0002\\u0002\\u0002\\\"\\u011c\\u0003\\u0002\\u0002\\u0002$\\u0121\",\n \"\\u0003\\u0002\\u0002\\u0002&\\u0123\\u0003\\u0002\\u0002\\u0002(\\u0129\\u0003\",\n \"\\u0002\\u0002\\u0002*\\u0134\\u0003\\u0002\\u0002\\u0002,\\u0150\\u0003\\u0002\",\n \"\\u0002\\u0002.\\u0152\\u0003\\u0002\\u0002\\u00020\\u015a\\u0003\\u0002\\u0002\",\n \"\\u00022\\u015c\\u0003\\u0002\\u0002\\u00024\\u015e\\u0003\\u0002\\u0002\\u0002\",\n \"6\\u0162\\u0003\\u0002\\u0002\\u00028\\u0169\\u0003\\u0002\\u0002\\u0002:\\u017c\",\n \"\\u0003\\u0002\\u0002\\u0002<\\u017e\\u0003\\u0002\\u0002\\u0002>\\u0180\\u0003\",\n \"\\u0002\\u0002\\u0002@\\u0182\\u0003\\u0002\\u0002\\u0002B\\u018e\\u0003\\u0002\",\n \"\\u0002\\u0002D\\u0190\\u0003\\u0002\\u0002\\u0002F\\u0192\\u0003\\u0002\\u0002\",\n \"\\u0002H\\u019f\\u0003\\u0002\\u0002\\u0002J\\u01a1\\u0003\\u0002\\u0002\\u0002\",\n \"L\\u01a4\\u0003\\u0002\\u0002\\u0002N\\u01ae\\u0003\\u0002\\u0002\\u0002P\\u01b1\",\n \"\\u0003\\u0002\\u0002\\u0002R\\u01b7\\u0003\\u0002\\u0002\\u0002T\\u01ba\\u0003\",\n \"\\u0002\\u0002\\u0002V\\u01c4\\u0003\\u0002\\u0002\\u0002X\\u01c8\\u0003\\u0002\",\n \"\\u0002\\u0002Z\\u01cd\\u0003\\u0002\\u0002\\u0002\\\\\\u01d0\\u0003\\u0002\\u0002\",\n \"\\u0002^\\u01dd\\u0003\\u0002\\u0002\\u0002`\\u01f3\\u0003\\u0002\\u0002\\u0002\",\n \"b\\u0214\\u0003\\u0002\\u0002\\u0002d\\u021f\\u0003\\u0002\\u0002\\u0002f\\u0224\",\n \"\\u0003\\u0002\\u0002\\u0002h\\u0226\\u0003\\u0002\\u0002\\u0002jl\\u0005\\u0004\",\n \"\\u0003\\u0002kj\\u0003\\u0002\\u0002\\u0002kl\\u0003\\u0002\\u0002\\u0002lm\\u0003\",\n \"\\u0002\\u0002\\u0002m~\\u0007\\u0002\\u0002\\u0003np\\u0005\\u0004\\u0003\\u0002\",\n \"on\\u0003\\u0002\\u0002\\u0002op\\u0003\\u0002\\u0002\\u0002pq\\u0003\\u0002\\u0002\",\n \"\\u0002qr\\u0005\\u0006\\u0004\\u0002rs\\u0007\\u0002\\u0002\\u0003s~\\u0003\\u0002\",\n \"\\u0002\\u0002tv\\u0005\\u0004\\u0003\\u0002ut\\u0003\\u0002\\u0002\\u0002uv\\u0003\",\n \"\\u0002\\u0002\\u0002vx\\u0003\\u0002\\u0002\\u0002wy\\u0005\\u0006\\u0004\\u0002\",\n \"xw\\u0003\\u0002\\u0002\\u0002xy\\u0003\\u0002\\u0002\\u0002yz\\u0003\\u0002\\u0002\",\n \"\\u0002z{\\u0005\\u001a\\u000e\\u0002{|\\u0007\\u0002\\u0002\\u0003|~\\u0003\\u0002\",\n \"\\u0002\\u0002}k\\u0003\\u0002\\u0002\\u0002}o\\u0003\\u0002\\u0002\\u0002}u\\u0003\",\n \"\\u0002\\u0002\\u0002~\\u0003\\u0003\\u0002\\u0002\\u0002\\u007f\\u0080\\u0007\",\n \"\\u0003\\u0002\\u0002\\u0080\\u0082\\u0007>\\u0002\\u0002\\u0081\\u0083\\u0007\",\n \"?\\u0002\\u0002\\u0082\\u0081\\u0003\\u0002\\u0002\\u0002\\u0082\\u0083\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0083\\u0005\\u0003\\u0002\\u0002\\u0002\\u0084\\u0087\\u0005\",\n \"\\b\\u0005\\u0002\\u0085\\u0087\\u0005\\u000e\\b\\u0002\\u0086\\u0084\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0086\\u0085\\u0003\\u0002\\u0002\\u0002\\u0087\\u0088\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0088\\u0086\\u0003\\u0002\\u0002\\u0002\\u0088\\u0089\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0089\\u0093\\u0003\\u0002\\u0002\\u0002\\u008a\\u008d\\u0005\\b\",\n \"\\u0005\\u0002\\u008b\\u008d\\u0005\\u000e\\b\\u0002\\u008c\\u008a\\u0003\\u0002\",\n \"\\u0002\\u0002\\u008c\\u008b\\u0003\\u0002\\u0002\\u0002\\u008d\\u0090\\u0003\\u0002\",\n \"\\u0002\\u0002\\u008e\\u008c\\u0003\\u0002\\u0002\\u0002\\u008e\\u008f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u008f\\u0091\\u0003\\u0002\\u0002\\u0002\\u0090\\u008e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0091\\u0093\\u0005\\n\\u0006\\u0002\\u0092\\u0086\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0092\\u008e\\u0003\\u0002\\u0002\\u0002\\u0093\\u0007\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0094\\u0096\\u0007(\\u0002\\u0002\\u0095\\u0097\\u0005\\u0016\",\n \"\\f\\u0002\\u0096\\u0095\\u0003\\u0002\\u0002\\u0002\\u0096\\u0097\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0097\\u0098\\u0003\\u0002\\u0002\\u0002\\u0098\\u009c\\u0007\\u001d\",\n \"\\u0002\\u0002\\u0099\\u009b\\u0005\\u000e\\b\\u0002\\u009a\\u0099\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009b\\u009e\\u0003\\u0002\\u0002\\u0002\\u009c\\u009a\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009c\\u009d\\u0003\\u0002\\u0002\\u0002\\u009d\\u009f\\u0003\\u0002\",\n \"\\u0002\\u0002\\u009e\\u009c\\u0003\\u0002\\u0002\\u0002\\u009f\\u00aa\\u0007\\u001e\",\n \"\\u0002\\u0002\\u00a0\\u00a2\\u0007(\\u0002\\u0002\\u00a1\\u00a3\\u0005\\u0016\",\n \"\\f\\u0002\\u00a2\\u00a1\\u0003\\u0002\\u0002\\u0002\\u00a2\\u00a3\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00a3\\u00a4\\u0003\\u0002\\u0002\\u0002\\u00a4\\u00aa\\u0007\\u001d\",\n \"\\u0002\\u0002\\u00a5\\u00a7\\u0007(\\u0002\\u0002\\u00a6\\u00a8\\u0005\\u0016\",\n \"\\f\\u0002\\u00a7\\u00a6\\u0003\\u0002\\u0002\\u0002\\u00a7\\u00a8\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00a8\\u00aa\\u0003\\u0002\\u0002\\u0002\\u00a9\\u0094\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00a9\\u00a0\\u0003\\u0002\\u0002\\u0002\\u00a9\\u00a5\\u0003\\u0002\",\n \"\\u0002\\u0002\\u00aa\\t\\u0003\\u0002\\u0002\\u0002\\u00ab\\u00b1\\u0007/\\u0002\",\n \"\\u0002\\u00ac\\u00ae\\u0007\\u001b\\u0002\\u0002\\u00ad\\u00af\\u0005\\f\\u0007\",\n \"\\u0002\\u00ae\\u00ad\\u0003\\u0002\\u0002\\u0002\\u00ae\\u00af\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00af\\u00b0\\u0003\\u0002\\u0002\\u0002\\u00b0\\u00b2\\u0007\\u001c\\u0002\",\n \"\\u0002\\u00b1\\u00ac\\u0003\\u0002\\u0002\\u0002\\u00b1\\u00b2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00b2\\u00b5\\u0003\\u0002\\u0002\\u0002\\u00b3\\u00b5\\u00071\\u0002\",\n \"\\u0002\\u00b4\\u00ab\\u0003\\u0002\\u0002\\u0002\\u00b4\\u00b3\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00b5\\u000b\\u0003\\u0002\\u0002\\u0002\\u00b6\\u00b7\\t\\u0002\\u0002\",\n \"\\u0002\\u00b7\\r\\u0003\\u0002\\u0002\\u0002\\u00b8\\u00ba\\u0005\\u0014\\u000b\",\n \"\\u0002\\u00b9\\u00b8\\u0003\\u0002\\u0002\\u0002\\u00b9\\u00ba\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ba\\u00bc\\u0003\\u0002\\u0002\\u0002\\u00bb\\u00bd\\u0005\\u0010\\t\",\n \"\\u0002\\u00bc\\u00bb\\u0003\\u0002\\u0002\\u0002\\u00bc\\u00bd\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00bd\\u00be\\u0003\\u0002\\u0002\\u0002\\u00be\\u00c0\\u0005\\u0016\\f\",\n \"\\u0002\\u00bf\\u00c1\\u0005\\u0018\\r\\u0002\\u00c0\\u00bf\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c0\\u00c1\\u0003\\u0002\\u0002\\u0002\\u00c1\\u00c3\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c2\\u00c4\\u0005\\u0012\\n\\u0002\\u00c3\\u00c2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c3\\u00c4\\u0003\\u0002\\u0002\\u0002\\u00c4\\u00c6\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c5\\u00c7\\u0007\\b\\u0002\\u0002\\u00c6\\u00c5\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c6\\u00c7\\u0003\\u0002\\u0002\\u0002\\u00c7\\u00cb\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00c8\\u00cb\\u0005\\u0010\\t\\u0002\\u00c9\\u00cb\\u0005\\u0014\\u000b\",\n \"\\u0002\\u00ca\\u00b9\\u0003\\u0002\\u0002\\u0002\\u00ca\\u00c8\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00ca\\u00c9\\u0003\\u0002\\u0002\\u0002\\u00cb\\u000f\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00cc\\u00cd\\u0007\\u0005\\u0002\\u0002\\u00cd\\u00ce\\u0005\\u0016\\f\",\n \"\\u0002\\u00ce\\u00cf\\u0007\\u0006\\u0002\\u0002\\u00cf\\u00da\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00d0\\u00d1\\u0007\\u0005\\u0002\\u0002\\u00d1\\u00d3\\u0005\\u0016\\f\",\n \"\\u0002\\u00d2\\u00d4\\u0007\\r\\u0002\\u0002\\u00d3\\u00d2\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00d3\\u00d4\\u0003\\u0002\\u0002\\u0002\\u00d4\\u00da\\u0003\\u0002\\u0002\",\n \"\\u0002\\u00d5\\u00d7\\t\\u0003\\u0002\\u0002\\u00d6\\u00d8\\t\\u0004\\u0002\\u0002\",\n \"\\u00d7\\u00d6\\u0003\\u0002\\u0002\\u0002\\u00d7\\u00d8\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00d8\\u00da\\u0003\\u0002\\u0002\\u0002\\u00d9\\u00cc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00d9\\u00d0\\u0003\\u0002\\u0002\\u0002\\u00d9\\u00d5\\u0003\\u0002\\u0002\\u0002\",\n \"\\u00da\\u0011\\u0003\\u0002\\u0002\\u0002\\u00db\\u00dc\\u0007*\\u0002\\u0002\",\n \"\\u00dc\\u00df\\u0005\\u0016\\f\\u0002\\u00dd\\u00df\\u0007*\\u0002\\u0002\\u00de\",\n \"\\u00db\\u0003\\u0002\\u0002\\u0002\\u00de\\u00dd\\u0003\\u0002\\u0002\\u0002\\u00df\",\n \"\\u0013\\u0003\\u0002\\u0002\\u0002\\u00e0\\u00e1\\u00071\\u0002\\u0002\\u00e1\",\n \"\\u0015\\u0003\\u0002\\u0002\\u0002\\u00e2\\u00e3\\t\\u0002\\u0002\\u0002\\u00e3\",\n \"\\u0017\\u0003\\u0002\\u0002\\u0002\\u00e4\\u00e5\\u00074\\u0002\\u0002\\u00e5\",\n \"\\u0019\\u0003\\u0002\\u0002\\u0002\\u00e6\\u00e8\\u0005 \\u0011\\u0002\\u00e7\",\n \"\\u00e6\\u0003\\u0002\\u0002\\u0002\\u00e8\\u00e9\\u0003\\u0002\\u0002\\u0002\\u00e9\",\n \"\\u00e7\\u0003\\u0002\\u0002\\u0002\\u00e9\\u00ea\\u0003\\u0002\\u0002\\u0002\\u00ea\",\n \"\\u001b\\u0003\\u0002\\u0002\\u0002\\u00eb\\u00ed\\u0007%\\u0002\\u0002\\u00ec\",\n \"\\u00ee\\u0005`1\\u0002\\u00ed\\u00ec\\u0003\\u0002\\u0002\\u0002\\u00ed\\u00ee\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00ee\\u00f0\\u0003\\u0002\\u0002\\u0002\\u00ef\\u00f1\",\n \"\\u0007\\u0018\\u0002\\u0002\\u00f0\\u00ef\\u0003\\u0002\\u0002\\u0002\\u00f0\\u00f1\",\n \"\\u0003\\u0002\\u0002\\u0002\\u00f1\\u00f8\\u0003\\u0002\\u0002\\u0002\\u00f2\\u00f3\",\n \"\\u00070\\u0002\\u0002\\u00f3\\u00f5\\u0005:\\u001e\\u0002\\u00f4\\u00f6\\u0007\",\n \"<\\u0002\\u0002\\u00f5\\u00f4\\u0003\\u0002\\u0002\\u0002\\u00f5\\u00f6\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00f6\\u00f8\\u0003\\u0002\\u0002\\u0002\\u00f7\\u00eb\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00f7\\u00f2\\u0003\\u0002\\u0002\\u0002\\u00f8\\u001d\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00f9\\u00fd\\u0007\\u000b\\u0002\\u0002\\u00fa\\u00fc\\t\",\n \"\\u0005\\u0002\\u0002\\u00fb\\u00fa\\u0003\\u0002\\u0002\\u0002\\u00fc\\u00ff\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00fd\\u00fb\\u0003\\u0002\\u0002\\u0002\\u00fd\\u00fe\\u0003\",\n \"\\u0002\\u0002\\u0002\\u00fe\\u0100\\u0003\\u0002\\u0002\\u0002\\u00ff\\u00fd\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0100\\u0101\\u0005\\u0016\\f\\u0002\\u0101\\u0105\\u0007\",\n \"\\u000b\\u0002\\u0002\\u0102\\u0104\\t\\u0005\\u0002\\u0002\\u0103\\u0102\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0104\\u0107\\u0003\\u0002\\u0002\\u0002\\u0105\\u0103\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0105\\u0106\\u0003\\u0002\\u0002\\u0002\\u0106\\u001f\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0107\\u0105\\u0003\\u0002\\u0002\\u0002\\u0108\\u0118\\u0005\",\n \"T+\\u0002\\u0109\\u0118\\u0005\\\"\\u0012\\u0002\\u010a\\u0118\\u0005$\\u0013\\u0002\",\n \"\\u010b\\u0118\\u0005^0\\u0002\\u010c\\u0118\\u0005&\\u0014\\u0002\\u010d\\u0118\",\n \"\\u0005*\\u0016\\u0002\\u010e\\u0110\\u0005:\\u001e\\u0002\\u010f\\u0111\\u0007\",\n \"<\\u0002\\u0002\\u0110\\u010f\\u0003\\u0002\\u0002\\u0002\\u0110\\u0111\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0111\\u0118\\u0003\\u0002\\u0002\\u0002\\u0112\\u0118\\u0005\",\n \"\\u001c\\u000f\\u0002\\u0113\\u0118\\u0005\\u001e\\u0010\\u0002\\u0114\\u0118\\u0005\",\n \"L\\'\\u0002\\u0115\\u0116\\u0007:\\u0002\\u0002\\u0116\\u0118\\b\\u0011\\u0001\\u0002\",\n \"\\u0117\\u0108\\u0003\\u0002\\u0002\\u0002\\u0117\\u0109\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0117\\u010a\\u0003\\u0002\\u0002\\u0002\\u0117\\u010b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0117\\u010c\\u0003\\u0002\\u0002\\u0002\\u0117\\u010d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0117\\u010e\\u0003\\u0002\\u0002\\u0002\\u0117\\u0112\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0117\\u0113\\u0003\\u0002\\u0002\\u0002\\u0117\\u0114\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0117\\u0115\\u0003\\u0002\\u0002\\u0002\\u0118!\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0119\\u011a\\u0007\\'\\u0002\\u0002\\u011a\\u011d\\u0005\\\\/\\u0002\\u011b\\u011d\",\n \"\\u0007\\'\\u0002\\u0002\\u011c\\u0119\\u0003\\u0002\\u0002\\u0002\\u011c\\u011b\",\n \"\\u0003\\u0002\\u0002\\u0002\\u011d#\\u0003\\u0002\\u0002\\u0002\\u011e\\u011f\",\n \"\\u0007)\\u0002\\u0002\\u011f\\u0122\\u0005\\\\/\\u0002\\u0120\\u0122\\u0007)\\u0002\",\n \"\\u0002\\u0121\\u011e\\u0003\\u0002\\u0002\\u0002\\u0121\\u0120\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0122%\\u0003\\u0002\\u0002\\u0002\\u0123\\u0126\\u0005(\\u0015\\u0002\",\n \"\\u0124\\u0127\\u0007\\u0018\\u0002\\u0002\\u0125\\u0127\\u0005\\\\/\\u0002\\u0126\",\n \"\\u0124\\u0003\\u0002\\u0002\\u0002\\u0126\\u0125\\u0003\\u0002\\u0002\\u0002\\u0126\",\n \"\\u0127\\u0003\\u0002\\u0002\\u0002\\u0127\\'\\u0003\\u0002\\u0002\\u0002\\u0128\",\n \"\\u012a\\u00058\\u001d\\u0002\\u0129\\u0128\\u0003\\u0002\\u0002\\u0002\\u0129\",\n \"\\u012a\\u0003\\u0002\\u0002\\u0002\\u012a\\u012b\\u0003\\u0002\\u0002\\u0002\\u012b\",\n \"\\u012c\\u0007&\\u0002\\u0002\\u012c\\u0132\\u0005> \\u0002\\u012d\\u012f\\u0007\",\n \"\\u001b\\u0002\\u0002\\u012e\\u0130\\u0005F$\\u0002\\u012f\\u012e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u012f\\u0130\\u0003\\u0002\\u0002\\u0002\\u0130\\u0131\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0131\\u0133\\u0007\\u001c\\u0002\\u0002\\u0132\\u012d\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0132\\u0133\\u0003\\u0002\\u0002\\u0002\\u0133)\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0134\\u0137\\u0005,\\u0017\\u0002\\u0135\\u0138\\u0007\\u0018\",\n \"\\u0002\\u0002\\u0136\\u0138\\u0005\\\\/\\u0002\\u0137\\u0135\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0137\\u0136\\u0003\\u0002\\u0002\\u0002\\u0137\\u0138\\u0003\\u0002\\u0002\",\n \"\\u0002\\u0138+\\u0003\\u0002\\u0002\\u0002\\u0139\\u013b\\u00058\\u001d\\u0002\",\n \"\\u013a\\u0139\\u0003\\u0002\\u0002\\u0002\\u013a\\u013b\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013b\\u0144\\u0003\\u0002\\u0002\\u0002\\u013c\\u013d\\u00050\\u0019\\u0002\",\n \"\\u013d\\u013e\\u0007\\u0007\\u0002\\u0002\\u013e\\u0140\\u0003\\u0002\\u0002\\u0002\",\n \"\\u013f\\u013c\\u0003\\u0002\\u0002\\u0002\\u013f\\u0140\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0140\\u0141\\u0003\\u0002\\u0002\\u0002\\u0141\\u0142\\u00052\\u001a\\u0002\",\n \"\\u0142\\u0143\\u00072\\u0002\\u0002\\u0143\\u0145\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0144\\u013f\\u0003\\u0002\\u0002\\u0002\\u0144\\u0145\\u0003\\u0002\\u0002\\u0002\",\n \"\\u0145\\u0146\\u0003\\u0002\\u0002\\u0002\\u0146\\u0151\\u0005.\\u0018\\u0002\",\n \"\\u0147\\u0151\\u00058\\u001d\\u0002\\u0148\\u0149\\u00050\\u0019\\u0002\\u0149\",\n \"\\u014a\\u0007\\u0007\\u0002\\u0002\\u014a\\u014c\\u0003\\u0002\\u0002\\u0002\\u014b\",\n \"\\u0148\\u0003\\u0002\\u0002\\u0002\\u014b\\u014c\\u0003\\u0002\\u0002\\u0002\\u014c\",\n \"\\u014d\\u0003\\u0002\\u0002\\u0002\\u014d\\u014e\\u00052\\u001a\\u0002\\u014e\",\n \"\\u014f\\u00072\\u0002\\u0002\\u014f\\u0151\\u0003\\u0002\\u0002\\u0002\\u0150\",\n \"\\u013a\\u0003\\u0002\\u0002\\u0002\\u0150\\u0147\\u0003\\u0002\\u0002\\u0002\\u0150\",\n \"\\u014b\\u0003\\u0002\\u0002\\u0002\\u0151-\\u0003\\u0002\\u0002\\u0002\\u0152\",\n \"\\u0157\\u00054\\u001b\\u0002\\u0153\\u0154\\u00072\\u0002\\u0002\\u0154\\u0156\",\n \"\\u00054\\u001b\\u0002\\u0155\\u0153\\u0003\\u0002\\u0002\\u0002\\u0156\\u0159\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0157\\u0155\\u0003\\u0002\\u0002\\u0002\\u0157\\u0158\",\n \"\\u0003\\u0002\\u0002\\u0002\\u0158/\\u0003\\u0002\\u0002\\u0002\\u0159\\u0157\",\n \"\\u0003\\u0002\\u0002\\u0002\\u015a\\u015b\\t\\u0002\\u0002\\u0002\\u015b1\\u0003\",\n \"\\u0002\\u0002\\u0002\\u015c\\u015d\\t\\u0002\\u0002\\u0002\\u015d3\\u0003\\u0002\",\n \"\\u0002\\u0002\\u015e\\u0160\\u0005D#\\u0002\\u015f\\u0161\\u00056\\u001c\\u0002\",\n \"\\u0160\\u015f\\u0003\\u0002\\u0002\\u0002\\u0160\\u0161\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01615\\u0003\\u0002\\u0002\\u0002\\u0162\\u0164\\u0007\\u001b\\u0002\\u0002\",\n \"\\u0163\\u0165\\u0005F$\\u0002\\u0164\\u0163\\u0003\\u0002\\u0002\\u0002\\u0164\",\n \"\\u0165\\u0003\\u0002\\u0002\\u0002\\u0165\\u0166\\u0003\\u0002\\u0002\\u0002\\u0166\",\n \"\\u0167\\u0007\\u001c\\u0002\\u0002\\u01677\\u0003\\u0002\\u0002\\u0002\\u0168\",\n \"\\u016a\\u0005@!\\u0002\\u0169\\u0168\\u0003\\u0002\\u0002\\u0002\\u0169\\u016a\",\n \"\\u0003\\u0002\\u0002\\u0002\\u016a\\u016b\\u0003\\u0002\\u0002\\u0002\\u016b\\u016c\",\n \"\\u0005B\\\"\\u0002\\u016c\\u016d\\u0007\\u001a\\u0002\\u0002\\u016d9\\u0003\\u0002\",\n \"\\u0002\\u0002\\u016e\\u016f\\u00050\\u0019\\u0002\\u016f\\u0170\\u0007\\u0007\",\n \"\\u0002\\u0002\\u0170\\u0172\\u0003\\u0002\\u0002\\u0002\\u0171\\u016e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0171\\u0172\\u0003\\u0002\\u0002\\u0002\\u0172\\u0173\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0173\\u0174\\u00052\\u001a\\u0002\\u0174\\u0175\\u0007\\u0004\",\n \"\\u0002\\u0002\\u0175\\u0176\\u0005<\\u001f\\u0002\\u0176\\u017d\\u0003\\u0002\",\n \"\\u0002\\u0002\\u0177\\u0178\\u00050\\u0019\\u0002\\u0178\\u017a\\t\\u0006\\u0002\",\n \"\\u0002\\u0179\\u017b\\u00052\\u001a\\u0002\\u017a\\u0179\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017a\\u017b\\u0003\\u0002\\u0002\\u0002\\u017b\\u017d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017c\\u0171\\u0003\\u0002\\u0002\\u0002\\u017c\\u0177\\u0003\\u0002\\u0002\",\n \"\\u0002\\u017d;\\u0003\\u0002\\u0002\\u0002\\u017e\\u017f\\u0007;\\u0002\\u0002\",\n \"\\u017f=\\u0003\\u0002\\u0002\\u0002\\u0180\\u0181\\t\\u0002\\u0002\\u0002\\u0181\",\n \"?\\u0003\\u0002\\u0002\\u0002\\u0182\\u0183\\t\\u0002\\u0002\\u0002\\u0183A\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0184\\u018f\\u0005b2\\u0002\\u0185\\u018a\\u00073\\u0002\",\n \"\\u0002\\u0186\\u0187\\u0007\\u0019\\u0002\\u0002\\u0187\\u0189\\u00073\\u0002\",\n \"\\u0002\\u0188\\u0186\\u0003\\u0002\\u0002\\u0002\\u0189\\u018c\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018a\\u0188\\u0003\\u0002\\u0002\\u0002\\u018a\\u018b\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018b\\u018f\\u0003\\u0002\\u0002\\u0002\\u018c\\u018a\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018d\\u018f\\u00076\\u0002\\u0002\\u018e\\u0184\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018e\\u0185\\u0003\\u0002\\u0002\\u0002\\u018e\\u018d\\u0003\\u0002\\u0002\",\n \"\\u0002\\u018fC\\u0003\\u0002\\u0002\\u0002\\u0190\\u0191\\t\\u0002\\u0002\\u0002\",\n \"\\u0191E\\u0003\\u0002\\u0002\\u0002\\u0192\\u0197\\u0005H%\\u0002\\u0193\\u0194\",\n \"\\u0007\\u0019\\u0002\\u0002\\u0194\\u0196\\u0005H%\\u0002\\u0195\\u0193\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0196\\u0199\\u0003\\u0002\\u0002\\u0002\\u0197\\u0195\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0197\\u0198\\u0003\\u0002\\u0002\\u0002\\u0198\\u019b\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0199\\u0197\\u0003\\u0002\\u0002\\u0002\\u019a\\u019c\\u0007\",\n \"\\u0019\\u0002\\u0002\\u019b\\u019a\\u0003\\u0002\\u0002\\u0002\\u019b\\u019c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u019cG\\u0003\\u0002\\u0002\\u0002\\u019d\\u01a0\\u0005\",\n \"J&\\u0002\\u019e\\u01a0\\u0005`1\\u0002\\u019f\\u019d\\u0003\\u0002\\u0002\\u0002\",\n \"\\u019f\\u019e\\u0003\\u0002\\u0002\\u0002\\u01a0I\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a1\\u01a2\\u0005@!\\u0002\\u01a2\\u01a3\\u00073\\u0002\\u0002\\u01a3K\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01a4\\u01a8\\u0005N(\\u0002\\u01a5\\u01a7\\u0005P)\\u0002\",\n \"\\u01a6\\u01a5\\u0003\\u0002\\u0002\\u0002\\u01a7\\u01aa\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a8\\u01a6\\u0003\\u0002\\u0002\\u0002\\u01a8\\u01a9\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01a9\\u01ac\\u0003\\u0002\\u0002\\u0002\\u01aa\\u01a8\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01ab\\u01ad\\u0005R*\\u0002\\u01ac\\u01ab\\u0003\\u0002\\u0002\\u0002\\u01ac\",\n \"\\u01ad\\u0003\\u0002\\u0002\\u0002\\u01adM\\u0003\\u0002\\u0002\\u0002\\u01ae\",\n \"\\u01af\\u0007+\\u0002\\u0002\\u01af\\u01b0\\u0005\\\\/\\u0002\\u01b0O\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01b1\\u01b3\\u0007,\\u0002\\u0002\\u01b2\\u01b4\\u00056\\u001c\",\n \"\\u0002\\u01b3\\u01b2\\u0003\\u0002\\u0002\\u0002\\u01b3\\u01b4\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01b4\\u01b5\\u0003\\u0002\\u0002\\u0002\\u01b5\\u01b6\\u0005\\\\/\\u0002\",\n \"\\u01b6Q\\u0003\\u0002\\u0002\\u0002\\u01b7\\u01b8\\u0007-\\u0002\\u0002\\u01b8\",\n \"\\u01b9\\u0005\\\\/\\u0002\\u01b9S\\u0003\\u0002\\u0002\\u0002\\u01ba\\u01be\\u0005\",\n \"V,\\u0002\\u01bb\\u01bd\\u0005X-\\u0002\\u01bc\\u01bb\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01bd\\u01c0\\u0003\\u0002\\u0002\\u0002\\u01be\\u01bc\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01be\\u01bf\\u0003\\u0002\\u0002\\u0002\\u01bf\\u01c2\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c0\\u01be\\u0003\\u0002\\u0002\\u0002\\u01c1\\u01c3\\u0005Z.\\u0002\\u01c2\",\n \"\\u01c1\\u0003\\u0002\\u0002\\u0002\\u01c2\\u01c3\\u0003\\u0002\\u0002\\u0002\\u01c3\",\n \"U\\u0003\\u0002\\u0002\\u0002\\u01c4\\u01c5\\u0007\\\"\\u0002\\u0002\\u01c5\\u01c6\",\n \"\\u0005d3\\u0002\\u01c6\\u01c7\\u0005\\\\/\\u0002\\u01c7W\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01c8\\u01c9\\u0007#\\u0002\\u0002\\u01c9\\u01ca\\u0007\\\"\\u0002\\u0002\\u01ca\",\n \"\\u01cb\\u0005d3\\u0002\\u01cb\\u01cc\\u0005\\\\/\\u0002\\u01ccY\\u0003\\u0002\\u0002\",\n \"\\u0002\\u01cd\\u01ce\\u0007#\\u0002\\u0002\\u01ce\\u01cf\\u0005\\\\/\\u0002\\u01cf\",\n \"[\\u0003\\u0002\\u0002\\u0002\\u01d0\\u01d2\\u0007\\u001d\\u0002\\u0002\\u01d1\",\n \"\\u01d3\\u0005\\u001a\\u000e\\u0002\\u01d2\\u01d1\\u0003\\u0002\\u0002\\u0002\\u01d2\",\n \"\\u01d3\\u0003\\u0002\\u0002\\u0002\\u01d3\\u01d4\\u0003\\u0002\\u0002\\u0002\\u01d4\",\n \"\\u01d5\\u0007\\u001e\\u0002\\u0002\\u01d5]\\u0003\\u0002\\u0002\\u0002\\u01d6\",\n \"\\u01d7\\u0007$\\u0002\\u0002\\u01d7\\u01d8\\u0005d3\\u0002\\u01d8\\u01d9\\u0005\",\n \"\\\\/\\u0002\\u01d9\\u01de\\u0003\\u0002\\u0002\\u0002\\u01da\\u01db\\u0007$\\u0002\",\n \"\\u0002\\u01db\\u01de\\u0005d3\\u0002\\u01dc\\u01de\\u0007$\\u0002\\u0002\\u01dd\",\n \"\\u01d6\\u0003\\u0002\\u0002\\u0002\\u01dd\\u01da\\u0003\\u0002\\u0002\\u0002\\u01dd\",\n \"\\u01dc\\u0003\\u0002\\u0002\\u0002\\u01de_\\u0003\\u0002\\u0002\\u0002\\u01df\",\n \"\\u01e0\\b1\\u0001\\u0002\\u01e0\\u01e1\\u0007\\u0012\\u0002\\u0002\\u01e1\\u01f4\",\n \"\\u0005`1\\u0010\\u01e2\\u01e3\\u0007\\u0017\\u0002\\u0002\\u01e3\\u01f4\\u0005\",\n \"`1\\u000f\\u01e4\\u01e5\\u00052\\u001a\\u0002\\u01e5\\u01e6\\u00072\\u0002\\u0002\",\n \"\\u01e6\\u01e8\\u0003\\u0002\\u0002\\u0002\\u01e7\\u01e4\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01e7\\u01e8\\u0003\\u0002\\u0002\\u0002\\u01e8\\u01e9\\u0003\\u0002\\u0002\\u0002\",\n \"\\u01e9\\u01f4\\u0005.\\u0018\\u0002\\u01ea\\u01f4\\u0005&\\u0014\\u0002\\u01eb\",\n \"\\u01f4\\u0005b2\\u0002\\u01ec\\u01ed\\u0007\\u001b\\u0002\\u0002\\u01ed\\u01ee\",\n \"\\u0005`1\\u0002\\u01ee\\u01ef\\u0007\\u001c\\u0002\\u0002\\u01ef\\u01f4\\u0003\",\n \"\\u0002\\u0002\\u0002\\u01f0\\u01f1\\u00058\\u001d\\u0002\\u01f1\\u01f2\\u0005\",\n \"`1\\u0003\\u01f2\\u01f4\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01df\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f3\\u01e2\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01e7\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f3\\u01ea\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01eb\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f3\\u01ec\\u0003\\u0002\\u0002\\u0002\\u01f3\\u01f0\\u0003\\u0002\",\n \"\\u0002\\u0002\\u01f4\\u020c\\u0003\\u0002\\u0002\\u0002\\u01f5\\u01f6\\f\\u000e\",\n \"\\u0002\\u0002\\u01f6\\u01f7\\t\\u0007\\u0002\\u0002\\u01f7\\u020b\\u0005`1\\u000f\",\n \"\\u01f8\\u01f9\\f\\r\\u0002\\u0002\\u01f9\\u01fa\\t\\b\\u0002\\u0002\\u01fa\\u020b\",\n \"\\u0005`1\\u000e\\u01fb\\u01fc\\f\\f\\u0002\\u0002\\u01fc\\u01fd\\t\\t\\u0002\\u0002\",\n \"\\u01fd\\u020b\\u0005`1\\r\\u01fe\\u01ff\\f\\u000b\\u0002\\u0002\\u01ff\\u0200\\t\",\n \"\\n\\u0002\\u0002\\u0200\\u020b\\u0005`1\\f\\u0201\\u0202\\f\\n\\u0002\\u0002\\u0202\",\n \"\\u0203\\u0007\\n\\u0002\\u0002\\u0203\\u020b\\u0005`1\\u000b\\u0204\\u0205\\f\\t\",\n \"\\u0002\\u0002\\u0205\\u0206\\u0007\\t\\u0002\\u0002\\u0206\\u020b\\u0005`1\\n\\u0207\",\n \"\\u0208\\f\\b\\u0002\\u0002\\u0208\\u0209\\u0007\\u0011\\u0002\\u0002\\u0209\\u020b\",\n \"\\u0005`1\\t\\u020a\\u01f5\\u0003\\u0002\\u0002\\u0002\\u020a\\u01f8\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020a\\u01fb\\u0003\\u0002\\u0002\\u0002\\u020a\\u01fe\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020a\\u0201\\u0003\\u0002\\u0002\\u0002\\u020a\\u0204\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020a\\u0207\\u0003\\u0002\\u0002\\u0002\\u020b\\u020e\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020c\\u020a\\u0003\\u0002\\u0002\\u0002\\u020c\\u020d\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020da\\u0003\\u0002\\u0002\\u0002\\u020e\\u020c\\u0003\\u0002\",\n \"\\u0002\\u0002\\u020f\\u0215\\t\\u000b\\u0002\\u0002\\u0210\\u0215\\t\\f\\u0002\\u0002\",\n \"\\u0211\\u0215\\u00073\\u0002\\u0002\\u0212\\u0215\\u00076\\u0002\\u0002\\u0213\",\n \"\\u0215\\u0007!\\u0002\\u0002\\u0214\\u020f\\u0003\\u0002\\u0002\\u0002\\u0214\",\n \"\\u0210\\u0003\\u0002\\u0002\\u0002\\u0214\\u0211\\u0003\\u0002\\u0002\\u0002\\u0214\",\n \"\\u0212\\u0003\\u0002\\u0002\\u0002\\u0214\\u0213\\u0003\\u0002\\u0002\\u0002\\u0215\",\n \"c\\u0003\\u0002\\u0002\\u0002\\u0216\\u0217\\u0007\\u001b\\u0002\\u0002\\u0217\",\n \"\\u0218\\u0005f4\\u0002\\u0218\\u0219\\u0007\\u001c\\u0002\\u0002\\u0219\\u0220\",\n \"\\u0003\\u0002\\u0002\\u0002\\u021a\\u021b\\u0007\\u001b\\u0002\\u0002\\u021b\\u0220\",\n \"\\u0005f4\\u0002\\u021c\\u021d\\u0007\\u001b\\u0002\\u0002\\u021d\\u0220\\u0007\",\n \"\\u001c\\u0002\\u0002\\u021e\\u0220\\u0007\\u001b\\u0002\\u0002\\u021f\\u0216\\u0003\",\n \"\\u0002\\u0002\\u0002\\u021f\\u021a\\u0003\\u0002\\u0002\\u0002\\u021f\\u021c\\u0003\",\n \"\\u0002\\u0002\\u0002\\u021f\\u021e\\u0003\\u0002\\u0002\\u0002\\u0220e\\u0003\",\n \"\\u0002\\u0002\\u0002\\u0221\\u0225\\u0005b2\\u0002\\u0222\\u0225\\u0005`1\\u0002\",\n \"\\u0223\\u0225\\u0005h5\\u0002\\u0224\\u0221\\u0003\\u0002\\u0002\\u0002\\u0224\",\n \"\\u0222\\u0003\\u0002\\u0002\\u0002\\u0224\\u0223\\u0003\\u0002\\u0002\\u0002\\u0225\",\n \"g\\u0003\\u0002\\u0002\\u0002\\u0226\\u0227\\u00073\\u0002\\u0002\\u0227\\u0228\",\n \"\\u0007.\\u0002\\u0002\\u0228\\u0229\\u00073\\u0002\\u0002\\u0229i\\u0003\\u0002\",\n \"\\u0002\\u0002Nkoux}\\u0082\\u0086\\u0088\\u008c\\u008e\\u0092\\u0096\\u009c\\u00a2\",\n \"\\u00a7\\u00a9\\u00ae\\u00b1\\u00b4\\u00b9\\u00bc\\u00c0\\u00c3\\u00c6\\u00ca\\u00d3\",\n \"\\u00d7\\u00d9\\u00de\\u00e9\\u00ed\\u00f0\\u00f5\\u00f7\\u00fd\\u0105\\u0110\\u0117\",\n \"\\u011c\\u0121\\u0126\\u0129\\u012f\\u0132\\u0137\\u013a\\u013f\\u0144\\u014b\\u0150\",\n \"\\u0157\\u0160\\u0164\\u0169\\u0171\\u017a\\u017c\\u018a\\u018e\\u0197\\u019b\\u019f\",\n \"\\u01a8\\u01ac\\u01b3\\u01be\\u01c2\\u01d2\\u01dd\\u01e7\\u01f3\\u020a\\u020c\\u0214\",\n \"\\u021f\\u0224\"].join(\"\");\n\n\nvar atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN);\n\nvar decisionsToDFA = atn.decisionToState.map( function(ds, index) { return new antlr4.dfa.DFA(ds, index); });\n\nvar sharedContextCache = new antlr4.PredictionContextCache();\n\nvar literalNames = [ null, \"'title'\", \"':'\", \"'<<'\", \"'>>'\", \"'->'\", null, \n \"'||'\", \"'&&'\", \"'=='\", \"'!='\", \"'>'\", \"'<'\", \"'>='\", \n \"'<='\", \"'+'\", \"'-'\", \"'*'\", \"'/'\", \"'%'\", \"'^'\", \"'!'\", \n \"';'\", \"','\", \"'='\", \"'('\", \"')'\", \"'{'\", \"'}'\", \"'true'\", \n \"'false'\", \"'nil'\", \"'if'\", \"'else'\", null, \"'return'\", \n \"'new'\", \"'par'\", \"'group'\", \"'opt'\", \"'as'\", \"'try'\", \n \"'catch'\", \"'finally'\", \"'in'\", null, null, null, \"'.'\" ];\n\nvar symbolicNames = [ null, \"TITLE\", \"COL\", \"SOPEN\", \"SCLOSE\", \"ARROW\", \n \"COLOR\", \"OR\", \"AND\", \"EQ\", \"NEQ\", \"GT\", \"LT\", \"GTEQ\", \n \"LTEQ\", \"PLUS\", \"MINUS\", \"MULT\", \"DIV\", \"MOD\", \"POW\", \n \"NOT\", \"SCOL\", \"COMMA\", \"ASSIGN\", \"OPAR\", \"CPAR\", \n \"OBRACE\", \"CBRACE\", \"TRUE\", \"FALSE\", \"NIL\", \"IF\", \n \"ELSE\", \"WHILE\", \"RETURN\", \"NEW\", \"PAR\", \"GROUP\", \n \"OPT\", \"AS\", \"TRY\", \"CATCH\", \"FINALLY\", \"IN\", \"STARTER_LXR\", \n \"ANNOTATION_RET\", \"ANNOTATION\", \"DOT\", \"ID\", \"INT\", \n \"FLOAT\", \"STRING\", \"CR\", \"SPACE\", \"COMMENT\", \"OTHER\", \n \"EVENT_PAYLOAD_LXR\", \"EVENT_END\", \"WS\", \"TITLE_CONTENT\", \n \"TITLE_END\" ];\n\nvar ruleNames = [ \"prog\", \"title\", \"head\", \"group\", \"starterExp\", \"starter\", \n \"participant\", \"stereotype\", \"label\", \"participantType\", \n \"name\", \"width\", \"block\", \"ret\", \"divider\", \"stat\", \"par\", \n \"opt\", \"creation\", \"creationBody\", \"message\", \"messageBody\", \n \"func\", \"from\", \"to\", \"signature\", \"invocation\", \"assignment\", \n \"asyncMessage\", \"content\", \"construct\", \"type\", \"assignee\", \n \"methodName\", \"parameters\", \"parameter\", \"declaration\", \n \"tcf\", \"tryBlock\", \"catchBlock\", \"finallyBlock\", \"alt\", \n \"ifBlock\", \"elseIfBlock\", \"elseBlock\", \"braceBlock\", \n \"loop\", \"expr\", \"atom\", \"parExpr\", \"condition\", \"inExpr\" ];\n\nfunction sequenceParser (input) {\n\tantlr4.Parser.call(this, input);\n this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache);\n this.ruleNames = ruleNames;\n this.literalNames = literalNames;\n this.symbolicNames = symbolicNames;\n return this;\n}\n\nsequenceParser.prototype = Object.create(antlr4.Parser.prototype);\nsequenceParser.prototype.constructor = sequenceParser;\n\nObject.defineProperty(sequenceParser.prototype, \"atn\", {\n\tget : function() {\n\t\treturn atn;\n\t}\n});\n\nsequenceParser.EOF = antlr4.Token.EOF;\nsequenceParser.TITLE = 1;\nsequenceParser.COL = 2;\nsequenceParser.SOPEN = 3;\nsequenceParser.SCLOSE = 4;\nsequenceParser.ARROW = 5;\nsequenceParser.COLOR = 6;\nsequenceParser.OR = 7;\nsequenceParser.AND = 8;\nsequenceParser.EQ = 9;\nsequenceParser.NEQ = 10;\nsequenceParser.GT = 11;\nsequenceParser.LT = 12;\nsequenceParser.GTEQ = 13;\nsequenceParser.LTEQ = 14;\nsequenceParser.PLUS = 15;\nsequenceParser.MINUS = 16;\nsequenceParser.MULT = 17;\nsequenceParser.DIV = 18;\nsequenceParser.MOD = 19;\nsequenceParser.POW = 20;\nsequenceParser.NOT = 21;\nsequenceParser.SCOL = 22;\nsequenceParser.COMMA = 23;\nsequenceParser.ASSIGN = 24;\nsequenceParser.OPAR = 25;\nsequenceParser.CPAR = 26;\nsequenceParser.OBRACE = 27;\nsequenceParser.CBRACE = 28;\nsequenceParser.TRUE = 29;\nsequenceParser.FALSE = 30;\nsequenceParser.NIL = 31;\nsequenceParser.IF = 32;\nsequenceParser.ELSE = 33;\nsequenceParser.WHILE = 34;\nsequenceParser.RETURN = 35;\nsequenceParser.NEW = 36;\nsequenceParser.PAR = 37;\nsequenceParser.GROUP = 38;\nsequenceParser.OPT = 39;\nsequenceParser.AS = 40;\nsequenceParser.TRY = 41;\nsequenceParser.CATCH = 42;\nsequenceParser.FINALLY = 43;\nsequenceParser.IN = 44;\nsequenceParser.STARTER_LXR = 45;\nsequenceParser.ANNOTATION_RET = 46;\nsequenceParser.ANNOTATION = 47;\nsequenceParser.DOT = 48;\nsequenceParser.ID = 49;\nsequenceParser.INT = 50;\nsequenceParser.FLOAT = 51;\nsequenceParser.STRING = 52;\nsequenceParser.CR = 53;\nsequenceParser.SPACE = 54;\nsequenceParser.COMMENT = 55;\nsequenceParser.OTHER = 56;\nsequenceParser.EVENT_PAYLOAD_LXR = 57;\nsequenceParser.EVENT_END = 58;\nsequenceParser.WS = 59;\nsequenceParser.TITLE_CONTENT = 60;\nsequenceParser.TITLE_END = 61;\n\nsequenceParser.RULE_prog = 0;\nsequenceParser.RULE_title = 1;\nsequenceParser.RULE_head = 2;\nsequenceParser.RULE_group = 3;\nsequenceParser.RULE_starterExp = 4;\nsequenceParser.RULE_starter = 5;\nsequenceParser.RULE_participant = 6;\nsequenceParser.RULE_stereotype = 7;\nsequenceParser.RULE_label = 8;\nsequenceParser.RULE_participantType = 9;\nsequenceParser.RULE_name = 10;\nsequenceParser.RULE_width = 11;\nsequenceParser.RULE_block = 12;\nsequenceParser.RULE_ret = 13;\nsequenceParser.RULE_divider = 14;\nsequenceParser.RULE_stat = 15;\nsequenceParser.RULE_par = 16;\nsequenceParser.RULE_opt = 17;\nsequenceParser.RULE_creation = 18;\nsequenceParser.RULE_creationBody = 19;\nsequenceParser.RULE_message = 20;\nsequenceParser.RULE_messageBody = 21;\nsequenceParser.RULE_func = 22;\nsequenceParser.RULE_from = 23;\nsequenceParser.RULE_to = 24;\nsequenceParser.RULE_signature = 25;\nsequenceParser.RULE_invocation = 26;\nsequenceParser.RULE_assignment = 27;\nsequenceParser.RULE_asyncMessage = 28;\nsequenceParser.RULE_content = 29;\nsequenceParser.RULE_construct = 30;\nsequenceParser.RULE_type = 31;\nsequenceParser.RULE_assignee = 32;\nsequenceParser.RULE_methodName = 33;\nsequenceParser.RULE_parameters = 34;\nsequenceParser.RULE_parameter = 35;\nsequenceParser.RULE_declaration = 36;\nsequenceParser.RULE_tcf = 37;\nsequenceParser.RULE_tryBlock = 38;\nsequenceParser.RULE_catchBlock = 39;\nsequenceParser.RULE_finallyBlock = 40;\nsequenceParser.RULE_alt = 41;\nsequenceParser.RULE_ifBlock = 42;\nsequenceParser.RULE_elseIfBlock = 43;\nsequenceParser.RULE_elseBlock = 44;\nsequenceParser.RULE_braceBlock = 45;\nsequenceParser.RULE_loop = 46;\nsequenceParser.RULE_expr = 47;\nsequenceParser.RULE_atom = 48;\nsequenceParser.RULE_parExpr = 49;\nsequenceParser.RULE_condition = 50;\nsequenceParser.RULE_inExpr = 51;\n\n\nfunction ProgContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_prog;\n return this;\n}\n\nProgContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nProgContext.prototype.constructor = ProgContext;\n\nProgContext.prototype.EOF = function() {\n return this.getToken(sequenceParser.EOF, 0);\n};\n\nProgContext.prototype.title = function() {\n return this.getTypedRuleContext(TitleContext,0);\n};\n\nProgContext.prototype.head = function() {\n return this.getTypedRuleContext(HeadContext,0);\n};\n\nProgContext.prototype.block = function() {\n return this.getTypedRuleContext(BlockContext,0);\n};\n\nProgContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterProg(this);\n\t}\n};\n\nProgContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitProg(this);\n\t}\n};\n\n\n\n\nsequenceParser.ProgContext = ProgContext;\n\nsequenceParser.prototype.prog = function() {\n\n var localctx = new ProgContext(this, this._ctx, this.state);\n this.enterRule(localctx, 0, sequenceParser.RULE_prog);\n var _la = 0; // Token type\n try {\n this.state = 123;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,4,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 105;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.TITLE) {\n this.state = 104;\n this.title();\n }\n\n this.state = 107;\n this.match(sequenceParser.EOF);\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 109;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.TITLE) {\n this.state = 108;\n this.title();\n }\n\n this.state = 111;\n this.head();\n this.state = 112;\n this.match(sequenceParser.EOF);\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 115;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.TITLE) {\n this.state = 114;\n this.title();\n }\n\n this.state = 118;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,3,this._ctx);\n if(la_===1) {\n this.state = 117;\n this.head();\n\n }\n this.state = 120;\n this.block();\n this.state = 121;\n this.match(sequenceParser.EOF);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction TitleContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_title;\n return this;\n}\n\nTitleContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nTitleContext.prototype.constructor = TitleContext;\n\nTitleContext.prototype.TITLE = function() {\n return this.getToken(sequenceParser.TITLE, 0);\n};\n\nTitleContext.prototype.TITLE_CONTENT = function() {\n return this.getToken(sequenceParser.TITLE_CONTENT, 0);\n};\n\nTitleContext.prototype.TITLE_END = function() {\n return this.getToken(sequenceParser.TITLE_END, 0);\n};\n\nTitleContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterTitle(this);\n\t}\n};\n\nTitleContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitTitle(this);\n\t}\n};\n\n\n\n\nsequenceParser.TitleContext = TitleContext;\n\nsequenceParser.prototype.title = function() {\n\n var localctx = new TitleContext(this, this._ctx, this.state);\n this.enterRule(localctx, 2, sequenceParser.RULE_title);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 125;\n this.match(sequenceParser.TITLE);\n this.state = 126;\n this.match(sequenceParser.TITLE_CONTENT);\n this.state = 128;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.TITLE_END) {\n this.state = 127;\n this.match(sequenceParser.TITLE_END);\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction HeadContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_head;\n return this;\n}\n\nHeadContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nHeadContext.prototype.constructor = HeadContext;\n\nHeadContext.prototype.group = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(GroupContext);\n } else {\n return this.getTypedRuleContext(GroupContext,i);\n }\n};\n\nHeadContext.prototype.participant = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ParticipantContext);\n } else {\n return this.getTypedRuleContext(ParticipantContext,i);\n }\n};\n\nHeadContext.prototype.starterExp = function() {\n return this.getTypedRuleContext(StarterExpContext,0);\n};\n\nHeadContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterHead(this);\n\t}\n};\n\nHeadContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitHead(this);\n\t}\n};\n\n\n\n\nsequenceParser.HeadContext = HeadContext;\n\nsequenceParser.prototype.head = function() {\n\n var localctx = new HeadContext(this, this._ctx, this.state);\n this.enterRule(localctx, 4, sequenceParser.RULE_head);\n try {\n this.state = 144;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,10,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 132; \n this._errHandler.sync(this);\n var _alt = 1;\n do {\n \tswitch (_alt) {\n \tcase 1:\n \t\tthis.state = 132;\n \t\tthis._errHandler.sync(this);\n \t\tswitch(this._input.LA(1)) {\n \t\tcase sequenceParser.GROUP:\n \t\t this.state = 130;\n \t\t this.group();\n \t\t break;\n \t\tcase sequenceParser.SOPEN:\n \t\tcase sequenceParser.LT:\n \t\tcase sequenceParser.ANNOTATION:\n \t\tcase sequenceParser.ID:\n \t\tcase sequenceParser.STRING:\n \t\t this.state = 131;\n \t\t this.participant();\n \t\t break;\n \t\tdefault:\n \t\t throw new antlr4.error.NoViableAltException(this);\n \t\t}\n \t\tbreak;\n \tdefault:\n \t\tthrow new antlr4.error.NoViableAltException(this);\n \t}\n \tthis.state = 134; \n \tthis._errHandler.sync(this);\n \t_alt = this._interp.adaptivePredict(this._input,7, this._ctx);\n } while ( _alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER );\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 140;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,9,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n this.state = 138;\n this._errHandler.sync(this);\n switch(this._input.LA(1)) {\n case sequenceParser.GROUP:\n this.state = 136;\n this.group();\n break;\n case sequenceParser.SOPEN:\n case sequenceParser.LT:\n case sequenceParser.ANNOTATION:\n case sequenceParser.ID:\n case sequenceParser.STRING:\n this.state = 137;\n this.participant();\n break;\n default:\n throw new antlr4.error.NoViableAltException(this);\n } \n }\n this.state = 142;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,9,this._ctx);\n }\n\n this.state = 143;\n this.starterExp();\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction GroupContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_group;\n return this;\n}\n\nGroupContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nGroupContext.prototype.constructor = GroupContext;\n\nGroupContext.prototype.GROUP = function() {\n return this.getToken(sequenceParser.GROUP, 0);\n};\n\nGroupContext.prototype.OBRACE = function() {\n return this.getToken(sequenceParser.OBRACE, 0);\n};\n\nGroupContext.prototype.CBRACE = function() {\n return this.getToken(sequenceParser.CBRACE, 0);\n};\n\nGroupContext.prototype.name = function() {\n return this.getTypedRuleContext(NameContext,0);\n};\n\nGroupContext.prototype.participant = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ParticipantContext);\n } else {\n return this.getTypedRuleContext(ParticipantContext,i);\n }\n};\n\nGroupContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterGroup(this);\n\t}\n};\n\nGroupContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitGroup(this);\n\t}\n};\n\n\n\n\nsequenceParser.GroupContext = GroupContext;\n\nsequenceParser.prototype.group = function() {\n\n var localctx = new GroupContext(this, this._ctx, this.state);\n this.enterRule(localctx, 6, sequenceParser.RULE_group);\n var _la = 0; // Token type\n try {\n this.state = 167;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,15,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 146;\n this.match(sequenceParser.GROUP);\n this.state = 148;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.ID || _la===sequenceParser.STRING) {\n this.state = 147;\n this.name();\n }\n\n this.state = 150;\n this.match(sequenceParser.OBRACE);\n this.state = 154;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n while(_la===sequenceParser.SOPEN || _la===sequenceParser.LT || ((((_la - 47)) & ~0x1f) == 0 && ((1 << (_la - 47)) & ((1 << (sequenceParser.ANNOTATION - 47)) | (1 << (sequenceParser.ID - 47)) | (1 << (sequenceParser.STRING - 47)))) !== 0)) {\n this.state = 151;\n this.participant();\n this.state = 156;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n }\n this.state = 157;\n this.match(sequenceParser.CBRACE);\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 158;\n this.match(sequenceParser.GROUP);\n this.state = 160;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.ID || _la===sequenceParser.STRING) {\n this.state = 159;\n this.name();\n }\n\n this.state = 162;\n this.match(sequenceParser.OBRACE);\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 163;\n this.match(sequenceParser.GROUP);\n this.state = 165;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,14,this._ctx);\n if(la_===1) {\n this.state = 164;\n this.name();\n\n }\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction StarterExpContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_starterExp;\n return this;\n}\n\nStarterExpContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nStarterExpContext.prototype.constructor = StarterExpContext;\n\nStarterExpContext.prototype.STARTER_LXR = function() {\n return this.getToken(sequenceParser.STARTER_LXR, 0);\n};\n\nStarterExpContext.prototype.OPAR = function() {\n return this.getToken(sequenceParser.OPAR, 0);\n};\n\nStarterExpContext.prototype.CPAR = function() {\n return this.getToken(sequenceParser.CPAR, 0);\n};\n\nStarterExpContext.prototype.starter = function() {\n return this.getTypedRuleContext(StarterContext,0);\n};\n\nStarterExpContext.prototype.ANNOTATION = function() {\n return this.getToken(sequenceParser.ANNOTATION, 0);\n};\n\nStarterExpContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterStarterExp(this);\n\t}\n};\n\nStarterExpContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitStarterExp(this);\n\t}\n};\n\n\n\n\nsequenceParser.StarterExpContext = StarterExpContext;\n\nsequenceParser.prototype.starterExp = function() {\n\n var localctx = new StarterExpContext(this, this._ctx, this.state);\n this.enterRule(localctx, 8, sequenceParser.RULE_starterExp);\n var _la = 0; // Token type\n try {\n this.state = 178;\n this._errHandler.sync(this);\n switch(this._input.LA(1)) {\n case sequenceParser.STARTER_LXR:\n this.enterOuterAlt(localctx, 1);\n this.state = 169;\n this.match(sequenceParser.STARTER_LXR);\n this.state = 175;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.OPAR) {\n this.state = 170;\n this.match(sequenceParser.OPAR);\n this.state = 172;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.ID || _la===sequenceParser.STRING) {\n this.state = 171;\n this.starter();\n }\n\n this.state = 174;\n this.match(sequenceParser.CPAR);\n }\n\n break;\n case sequenceParser.ANNOTATION:\n this.enterOuterAlt(localctx, 2);\n this.state = 177;\n this.match(sequenceParser.ANNOTATION);\n break;\n default:\n throw new antlr4.error.NoViableAltException(this);\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction StarterContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_starter;\n return this;\n}\n\nStarterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nStarterContext.prototype.constructor = StarterContext;\n\nStarterContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nStarterContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nStarterContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterStarter(this);\n\t}\n};\n\nStarterContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitStarter(this);\n\t}\n};\n\n\n\n\nsequenceParser.StarterContext = StarterContext;\n\nsequenceParser.prototype.starter = function() {\n\n var localctx = new StarterContext(this, this._ctx, this.state);\n this.enterRule(localctx, 10, sequenceParser.RULE_starter);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 180;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParticipantContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_participant;\n return this;\n}\n\nParticipantContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParticipantContext.prototype.constructor = ParticipantContext;\n\nParticipantContext.prototype.name = function() {\n return this.getTypedRuleContext(NameContext,0);\n};\n\nParticipantContext.prototype.participantType = function() {\n return this.getTypedRuleContext(ParticipantTypeContext,0);\n};\n\nParticipantContext.prototype.stereotype = function() {\n return this.getTypedRuleContext(StereotypeContext,0);\n};\n\nParticipantContext.prototype.width = function() {\n return this.getTypedRuleContext(WidthContext,0);\n};\n\nParticipantContext.prototype.label = function() {\n return this.getTypedRuleContext(LabelContext,0);\n};\n\nParticipantContext.prototype.COLOR = function() {\n return this.getToken(sequenceParser.COLOR, 0);\n};\n\nParticipantContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParticipant(this);\n\t}\n};\n\nParticipantContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParticipant(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParticipantContext = ParticipantContext;\n\nsequenceParser.prototype.participant = function() {\n\n var localctx = new ParticipantContext(this, this._ctx, this.state);\n this.enterRule(localctx, 12, sequenceParser.RULE_participant);\n var _la = 0; // Token type\n try {\n this.state = 200;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,24,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 183;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.ANNOTATION) {\n this.state = 182;\n this.participantType();\n }\n\n this.state = 186;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.SOPEN || _la===sequenceParser.LT) {\n this.state = 185;\n this.stereotype();\n }\n\n this.state = 188;\n this.name();\n this.state = 190;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,21,this._ctx);\n if(la_===1) {\n this.state = 189;\n this.width();\n\n }\n this.state = 193;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.AS) {\n this.state = 192;\n this.label();\n }\n\n this.state = 196;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.COLOR) {\n this.state = 195;\n this.match(sequenceParser.COLOR);\n }\n\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 198;\n this.stereotype();\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 199;\n this.participantType();\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction StereotypeContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_stereotype;\n return this;\n}\n\nStereotypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nStereotypeContext.prototype.constructor = StereotypeContext;\n\nStereotypeContext.prototype.SOPEN = function() {\n return this.getToken(sequenceParser.SOPEN, 0);\n};\n\nStereotypeContext.prototype.name = function() {\n return this.getTypedRuleContext(NameContext,0);\n};\n\nStereotypeContext.prototype.SCLOSE = function() {\n return this.getToken(sequenceParser.SCLOSE, 0);\n};\n\nStereotypeContext.prototype.GT = function() {\n return this.getToken(sequenceParser.GT, 0);\n};\n\nStereotypeContext.prototype.LT = function() {\n return this.getToken(sequenceParser.LT, 0);\n};\n\nStereotypeContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterStereotype(this);\n\t}\n};\n\nStereotypeContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitStereotype(this);\n\t}\n};\n\n\n\n\nsequenceParser.StereotypeContext = StereotypeContext;\n\nsequenceParser.prototype.stereotype = function() {\n\n var localctx = new StereotypeContext(this, this._ctx, this.state);\n this.enterRule(localctx, 14, sequenceParser.RULE_stereotype);\n var _la = 0; // Token type\n try {\n this.state = 215;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,27,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 202;\n this.match(sequenceParser.SOPEN);\n this.state = 203;\n this.name();\n this.state = 204;\n this.match(sequenceParser.SCLOSE);\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 206;\n this.match(sequenceParser.SOPEN);\n this.state = 207;\n this.name();\n this.state = 209;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.GT) {\n this.state = 208;\n this.match(sequenceParser.GT);\n }\n\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 211;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.SOPEN || _la===sequenceParser.LT)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 213;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.SCLOSE || _la===sequenceParser.GT) {\n this.state = 212;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.SCLOSE || _la===sequenceParser.GT)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n }\n\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction LabelContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_label;\n return this;\n}\n\nLabelContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nLabelContext.prototype.constructor = LabelContext;\n\nLabelContext.prototype.AS = function() {\n return this.getToken(sequenceParser.AS, 0);\n};\n\nLabelContext.prototype.name = function() {\n return this.getTypedRuleContext(NameContext,0);\n};\n\nLabelContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterLabel(this);\n\t}\n};\n\nLabelContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitLabel(this);\n\t}\n};\n\n\n\n\nsequenceParser.LabelContext = LabelContext;\n\nsequenceParser.prototype.label = function() {\n\n var localctx = new LabelContext(this, this._ctx, this.state);\n this.enterRule(localctx, 16, sequenceParser.RULE_label);\n try {\n this.state = 220;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,28,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 217;\n this.match(sequenceParser.AS);\n this.state = 218;\n this.name();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 219;\n this.match(sequenceParser.AS);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParticipantTypeContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_participantType;\n return this;\n}\n\nParticipantTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParticipantTypeContext.prototype.constructor = ParticipantTypeContext;\n\nParticipantTypeContext.prototype.ANNOTATION = function() {\n return this.getToken(sequenceParser.ANNOTATION, 0);\n};\n\nParticipantTypeContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParticipantType(this);\n\t}\n};\n\nParticipantTypeContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParticipantType(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParticipantTypeContext = ParticipantTypeContext;\n\nsequenceParser.prototype.participantType = function() {\n\n var localctx = new ParticipantTypeContext(this, this._ctx, this.state);\n this.enterRule(localctx, 18, sequenceParser.RULE_participantType);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 222;\n this.match(sequenceParser.ANNOTATION);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction NameContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_name;\n return this;\n}\n\nNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nNameContext.prototype.constructor = NameContext;\n\nNameContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nNameContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nNameContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterName(this);\n\t}\n};\n\nNameContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitName(this);\n\t}\n};\n\n\n\n\nsequenceParser.NameContext = NameContext;\n\nsequenceParser.prototype.name = function() {\n\n var localctx = new NameContext(this, this._ctx, this.state);\n this.enterRule(localctx, 20, sequenceParser.RULE_name);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 224;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction WidthContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_width;\n return this;\n}\n\nWidthContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nWidthContext.prototype.constructor = WidthContext;\n\nWidthContext.prototype.INT = function() {\n return this.getToken(sequenceParser.INT, 0);\n};\n\nWidthContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterWidth(this);\n\t}\n};\n\nWidthContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitWidth(this);\n\t}\n};\n\n\n\n\nsequenceParser.WidthContext = WidthContext;\n\nsequenceParser.prototype.width = function() {\n\n var localctx = new WidthContext(this, this._ctx, this.state);\n this.enterRule(localctx, 22, sequenceParser.RULE_width);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 226;\n this.match(sequenceParser.INT);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction BlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_block;\n return this;\n}\n\nBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nBlockContext.prototype.constructor = BlockContext;\n\nBlockContext.prototype.stat = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(StatContext);\n } else {\n return this.getTypedRuleContext(StatContext,i);\n }\n};\n\nBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterBlock(this);\n\t}\n};\n\nBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.BlockContext = BlockContext;\n\nsequenceParser.prototype.block = function() {\n\n var localctx = new BlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 24, sequenceParser.RULE_block);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 229; \n this._errHandler.sync(this);\n _la = this._input.LA(1);\n do {\n this.state = 228;\n this.stat();\n this.state = 231; \n this._errHandler.sync(this);\n _la = this._input.LA(1);\n } while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.EQ) | (1 << sequenceParser.TRUE) | (1 << sequenceParser.FALSE) | (1 << sequenceParser.NIL))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (sequenceParser.IF - 32)) | (1 << (sequenceParser.WHILE - 32)) | (1 << (sequenceParser.RETURN - 32)) | (1 << (sequenceParser.NEW - 32)) | (1 << (sequenceParser.PAR - 32)) | (1 << (sequenceParser.OPT - 32)) | (1 << (sequenceParser.TRY - 32)) | (1 << (sequenceParser.ANNOTATION_RET - 32)) | (1 << (sequenceParser.ID - 32)) | (1 << (sequenceParser.INT - 32)) | (1 << (sequenceParser.FLOAT - 32)) | (1 << (sequenceParser.STRING - 32)) | (1 << (sequenceParser.OTHER - 32)))) !== 0));\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction RetContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_ret;\n return this;\n}\n\nRetContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nRetContext.prototype.constructor = RetContext;\n\nRetContext.prototype.RETURN = function() {\n return this.getToken(sequenceParser.RETURN, 0);\n};\n\nRetContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\n\nRetContext.prototype.SCOL = function() {\n return this.getToken(sequenceParser.SCOL, 0);\n};\n\nRetContext.prototype.ANNOTATION_RET = function() {\n return this.getToken(sequenceParser.ANNOTATION_RET, 0);\n};\n\nRetContext.prototype.asyncMessage = function() {\n return this.getTypedRuleContext(AsyncMessageContext,0);\n};\n\nRetContext.prototype.EVENT_END = function() {\n return this.getToken(sequenceParser.EVENT_END, 0);\n};\n\nRetContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterRet(this);\n\t}\n};\n\nRetContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitRet(this);\n\t}\n};\n\n\n\n\nsequenceParser.RetContext = RetContext;\n\nsequenceParser.prototype.ret = function() {\n\n var localctx = new RetContext(this, this._ctx, this.state);\n this.enterRule(localctx, 26, sequenceParser.RULE_ret);\n var _la = 0; // Token type\n try {\n this.state = 245;\n this._errHandler.sync(this);\n switch(this._input.LA(1)) {\n case sequenceParser.RETURN:\n this.enterOuterAlt(localctx, 1);\n this.state = 233;\n this.match(sequenceParser.RETURN);\n this.state = 235;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,30,this._ctx);\n if(la_===1) {\n this.state = 234;\n this.expr(0);\n\n }\n this.state = 238;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.SCOL) {\n this.state = 237;\n this.match(sequenceParser.SCOL);\n }\n\n break;\n case sequenceParser.ANNOTATION_RET:\n this.enterOuterAlt(localctx, 2);\n this.state = 240;\n this.match(sequenceParser.ANNOTATION_RET);\n this.state = 241;\n this.asyncMessage();\n this.state = 243;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.EVENT_END) {\n this.state = 242;\n this.match(sequenceParser.EVENT_END);\n }\n\n break;\n default:\n throw new antlr4.error.NoViableAltException(this);\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction DividerContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_divider;\n return this;\n}\n\nDividerContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nDividerContext.prototype.constructor = DividerContext;\n\nDividerContext.prototype.EQ = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.EQ);\n } else {\n return this.getToken(sequenceParser.EQ, i);\n }\n};\n\n\nDividerContext.prototype.name = function() {\n return this.getTypedRuleContext(NameContext,0);\n};\n\nDividerContext.prototype.ASSIGN = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.ASSIGN);\n } else {\n return this.getToken(sequenceParser.ASSIGN, i);\n }\n};\n\n\nDividerContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterDivider(this);\n\t}\n};\n\nDividerContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitDivider(this);\n\t}\n};\n\n\n\n\nsequenceParser.DividerContext = DividerContext;\n\nsequenceParser.prototype.divider = function() {\n\n var localctx = new DividerContext(this, this._ctx, this.state);\n this.enterRule(localctx, 28, sequenceParser.RULE_divider);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 247;\n this.match(sequenceParser.EQ);\n this.state = 251;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n while(_la===sequenceParser.EQ || _la===sequenceParser.ASSIGN) {\n this.state = 248;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.EQ || _la===sequenceParser.ASSIGN)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 253;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n }\n this.state = 254;\n this.name();\n this.state = 255;\n this.match(sequenceParser.EQ);\n this.state = 259;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,35,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n this.state = 256;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.EQ || _la===sequenceParser.ASSIGN)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n } \n }\n this.state = 261;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,35,this._ctx);\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction StatContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_stat;\n this._OTHER = null; // Token\n return this;\n}\n\nStatContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nStatContext.prototype.constructor = StatContext;\n\nStatContext.prototype.alt = function() {\n return this.getTypedRuleContext(AltContext,0);\n};\n\nStatContext.prototype.par = function() {\n return this.getTypedRuleContext(ParContext,0);\n};\n\nStatContext.prototype.opt = function() {\n return this.getTypedRuleContext(OptContext,0);\n};\n\nStatContext.prototype.loop = function() {\n return this.getTypedRuleContext(LoopContext,0);\n};\n\nStatContext.prototype.creation = function() {\n return this.getTypedRuleContext(CreationContext,0);\n};\n\nStatContext.prototype.message = function() {\n return this.getTypedRuleContext(MessageContext,0);\n};\n\nStatContext.prototype.asyncMessage = function() {\n return this.getTypedRuleContext(AsyncMessageContext,0);\n};\n\nStatContext.prototype.EVENT_END = function() {\n return this.getToken(sequenceParser.EVENT_END, 0);\n};\n\nStatContext.prototype.ret = function() {\n return this.getTypedRuleContext(RetContext,0);\n};\n\nStatContext.prototype.divider = function() {\n return this.getTypedRuleContext(DividerContext,0);\n};\n\nStatContext.prototype.tcf = function() {\n return this.getTypedRuleContext(TcfContext,0);\n};\n\nStatContext.prototype.OTHER = function() {\n return this.getToken(sequenceParser.OTHER, 0);\n};\n\nStatContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterStat(this);\n\t}\n};\n\nStatContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitStat(this);\n\t}\n};\n\n\n\n\nsequenceParser.StatContext = StatContext;\n\nsequenceParser.prototype.stat = function() {\n\n var localctx = new StatContext(this, this._ctx, this.state);\n this.enterRule(localctx, 30, sequenceParser.RULE_stat);\n var _la = 0; // Token type\n try {\n this.state = 277;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,37,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 262;\n this.alt();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 263;\n this.par();\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 264;\n this.opt();\n break;\n\n case 4:\n this.enterOuterAlt(localctx, 4);\n this.state = 265;\n this.loop();\n break;\n\n case 5:\n this.enterOuterAlt(localctx, 5);\n this.state = 266;\n this.creation();\n break;\n\n case 6:\n this.enterOuterAlt(localctx, 6);\n this.state = 267;\n this.message();\n break;\n\n case 7:\n this.enterOuterAlt(localctx, 7);\n this.state = 268;\n this.asyncMessage();\n this.state = 270;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.EVENT_END) {\n this.state = 269;\n this.match(sequenceParser.EVENT_END);\n }\n\n break;\n\n case 8:\n this.enterOuterAlt(localctx, 8);\n this.state = 272;\n this.ret();\n break;\n\n case 9:\n this.enterOuterAlt(localctx, 9);\n this.state = 273;\n this.divider();\n break;\n\n case 10:\n this.enterOuterAlt(localctx, 10);\n this.state = 274;\n this.tcf();\n break;\n\n case 11:\n this.enterOuterAlt(localctx, 11);\n this.state = 275;\n localctx._OTHER = this.match(sequenceParser.OTHER);\n console.log(\"unknown char: \" + (localctx._OTHER===null ? null : localctx._OTHER.text));\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_par;\n return this;\n}\n\nParContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParContext.prototype.constructor = ParContext;\n\nParContext.prototype.PAR = function() {\n return this.getToken(sequenceParser.PAR, 0);\n};\n\nParContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nParContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterPar(this);\n\t}\n};\n\nParContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitPar(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParContext = ParContext;\n\nsequenceParser.prototype.par = function() {\n\n var localctx = new ParContext(this, this._ctx, this.state);\n this.enterRule(localctx, 32, sequenceParser.RULE_par);\n try {\n this.state = 282;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,38,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 279;\n this.match(sequenceParser.PAR);\n this.state = 280;\n this.braceBlock();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 281;\n this.match(sequenceParser.PAR);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction OptContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_opt;\n return this;\n}\n\nOptContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nOptContext.prototype.constructor = OptContext;\n\nOptContext.prototype.OPT = function() {\n return this.getToken(sequenceParser.OPT, 0);\n};\n\nOptContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nOptContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterOpt(this);\n\t}\n};\n\nOptContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitOpt(this);\n\t}\n};\n\n\n\n\nsequenceParser.OptContext = OptContext;\n\nsequenceParser.prototype.opt = function() {\n\n var localctx = new OptContext(this, this._ctx, this.state);\n this.enterRule(localctx, 34, sequenceParser.RULE_opt);\n try {\n this.state = 287;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,39,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 284;\n this.match(sequenceParser.OPT);\n this.state = 285;\n this.braceBlock();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 286;\n this.match(sequenceParser.OPT);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction CreationContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_creation;\n return this;\n}\n\nCreationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nCreationContext.prototype.constructor = CreationContext;\n\nCreationContext.prototype.creationBody = function() {\n return this.getTypedRuleContext(CreationBodyContext,0);\n};\n\nCreationContext.prototype.SCOL = function() {\n return this.getToken(sequenceParser.SCOL, 0);\n};\n\nCreationContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nCreationContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterCreation(this);\n\t}\n};\n\nCreationContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitCreation(this);\n\t}\n};\n\n\n\n\nsequenceParser.CreationContext = CreationContext;\n\nsequenceParser.prototype.creation = function() {\n\n var localctx = new CreationContext(this, this._ctx, this.state);\n this.enterRule(localctx, 36, sequenceParser.RULE_creation);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 289;\n this.creationBody();\n this.state = 292;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,40,this._ctx);\n if(la_===1) {\n this.state = 290;\n this.match(sequenceParser.SCOL);\n\n } else if(la_===2) {\n this.state = 291;\n this.braceBlock();\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction CreationBodyContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_creationBody;\n return this;\n}\n\nCreationBodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nCreationBodyContext.prototype.constructor = CreationBodyContext;\n\nCreationBodyContext.prototype.NEW = function() {\n return this.getToken(sequenceParser.NEW, 0);\n};\n\nCreationBodyContext.prototype.construct = function() {\n return this.getTypedRuleContext(ConstructContext,0);\n};\n\nCreationBodyContext.prototype.assignment = function() {\n return this.getTypedRuleContext(AssignmentContext,0);\n};\n\nCreationBodyContext.prototype.OPAR = function() {\n return this.getToken(sequenceParser.OPAR, 0);\n};\n\nCreationBodyContext.prototype.CPAR = function() {\n return this.getToken(sequenceParser.CPAR, 0);\n};\n\nCreationBodyContext.prototype.parameters = function() {\n return this.getTypedRuleContext(ParametersContext,0);\n};\n\nCreationBodyContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterCreationBody(this);\n\t}\n};\n\nCreationBodyContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitCreationBody(this);\n\t}\n};\n\n\n\n\nsequenceParser.CreationBodyContext = CreationBodyContext;\n\nsequenceParser.prototype.creationBody = function() {\n\n var localctx = new CreationBodyContext(this, this._ctx, this.state);\n this.enterRule(localctx, 38, sequenceParser.RULE_creationBody);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 295;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(((((_la - 29)) & ~0x1f) == 0 && ((1 << (_la - 29)) & ((1 << (sequenceParser.TRUE - 29)) | (1 << (sequenceParser.FALSE - 29)) | (1 << (sequenceParser.NIL - 29)) | (1 << (sequenceParser.ID - 29)) | (1 << (sequenceParser.INT - 29)) | (1 << (sequenceParser.FLOAT - 29)) | (1 << (sequenceParser.STRING - 29)))) !== 0)) {\n this.state = 294;\n this.assignment();\n }\n\n this.state = 297;\n this.match(sequenceParser.NEW);\n this.state = 298;\n this.construct();\n this.state = 304;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,43,this._ctx);\n if(la_===1) {\n this.state = 299;\n this.match(sequenceParser.OPAR);\n this.state = 301;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.MINUS) | (1 << sequenceParser.NOT) | (1 << sequenceParser.OPAR) | (1 << sequenceParser.TRUE) | (1 << sequenceParser.FALSE) | (1 << sequenceParser.NIL))) !== 0) || ((((_la - 36)) & ~0x1f) == 0 && ((1 << (_la - 36)) & ((1 << (sequenceParser.NEW - 36)) | (1 << (sequenceParser.ID - 36)) | (1 << (sequenceParser.INT - 36)) | (1 << (sequenceParser.FLOAT - 36)) | (1 << (sequenceParser.STRING - 36)))) !== 0)) {\n this.state = 300;\n this.parameters();\n }\n\n this.state = 303;\n this.match(sequenceParser.CPAR);\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction MessageContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_message;\n return this;\n}\n\nMessageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nMessageContext.prototype.constructor = MessageContext;\n\nMessageContext.prototype.messageBody = function() {\n return this.getTypedRuleContext(MessageBodyContext,0);\n};\n\nMessageContext.prototype.SCOL = function() {\n return this.getToken(sequenceParser.SCOL, 0);\n};\n\nMessageContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nMessageContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterMessage(this);\n\t}\n};\n\nMessageContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitMessage(this);\n\t}\n};\n\n\n\n\nsequenceParser.MessageContext = MessageContext;\n\nsequenceParser.prototype.message = function() {\n\n var localctx = new MessageContext(this, this._ctx, this.state);\n this.enterRule(localctx, 40, sequenceParser.RULE_message);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 306;\n this.messageBody();\n this.state = 309;\n this._errHandler.sync(this);\n switch (this._input.LA(1)) {\n case sequenceParser.SCOL:\n \tthis.state = 307;\n \tthis.match(sequenceParser.SCOL);\n \tbreak;\n case sequenceParser.OBRACE:\n \tthis.state = 308;\n \tthis.braceBlock();\n \tbreak;\n case sequenceParser.EOF:\n case sequenceParser.EQ:\n case sequenceParser.CBRACE:\n case sequenceParser.TRUE:\n case sequenceParser.FALSE:\n case sequenceParser.NIL:\n case sequenceParser.IF:\n case sequenceParser.WHILE:\n case sequenceParser.RETURN:\n case sequenceParser.NEW:\n case sequenceParser.PAR:\n case sequenceParser.OPT:\n case sequenceParser.TRY:\n case sequenceParser.ANNOTATION_RET:\n case sequenceParser.ID:\n case sequenceParser.INT:\n case sequenceParser.FLOAT:\n case sequenceParser.STRING:\n case sequenceParser.OTHER:\n \tbreak;\n default:\n \tbreak;\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction MessageBodyContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_messageBody;\n return this;\n}\n\nMessageBodyContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nMessageBodyContext.prototype.constructor = MessageBodyContext;\n\nMessageBodyContext.prototype.func = function() {\n return this.getTypedRuleContext(FuncContext,0);\n};\n\nMessageBodyContext.prototype.assignment = function() {\n return this.getTypedRuleContext(AssignmentContext,0);\n};\n\nMessageBodyContext.prototype.to = function() {\n return this.getTypedRuleContext(ToContext,0);\n};\n\nMessageBodyContext.prototype.DOT = function() {\n return this.getToken(sequenceParser.DOT, 0);\n};\n\nMessageBodyContext.prototype.from = function() {\n return this.getTypedRuleContext(FromContext,0);\n};\n\nMessageBodyContext.prototype.ARROW = function() {\n return this.getToken(sequenceParser.ARROW, 0);\n};\n\nMessageBodyContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterMessageBody(this);\n\t}\n};\n\nMessageBodyContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitMessageBody(this);\n\t}\n};\n\n\n\n\nsequenceParser.MessageBodyContext = MessageBodyContext;\n\nsequenceParser.prototype.messageBody = function() {\n\n var localctx = new MessageBodyContext(this, this._ctx, this.state);\n this.enterRule(localctx, 42, sequenceParser.RULE_messageBody);\n try {\n this.state = 334;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,49,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 312;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,45,this._ctx);\n if(la_===1) {\n this.state = 311;\n this.assignment();\n\n }\n this.state = 322;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,47,this._ctx);\n if(la_===1) {\n this.state = 317;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,46,this._ctx);\n if(la_===1) {\n this.state = 314;\n this.from();\n this.state = 315;\n this.match(sequenceParser.ARROW);\n\n }\n this.state = 319;\n this.to();\n this.state = 320;\n this.match(sequenceParser.DOT);\n\n }\n this.state = 324;\n this.func();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 325;\n this.assignment();\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 329;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,48,this._ctx);\n if(la_===1) {\n this.state = 326;\n this.from();\n this.state = 327;\n this.match(sequenceParser.ARROW);\n\n }\n this.state = 331;\n this.to();\n this.state = 332;\n this.match(sequenceParser.DOT);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction FuncContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_func;\n return this;\n}\n\nFuncContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nFuncContext.prototype.constructor = FuncContext;\n\nFuncContext.prototype.signature = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(SignatureContext);\n } else {\n return this.getTypedRuleContext(SignatureContext,i);\n }\n};\n\nFuncContext.prototype.DOT = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.DOT);\n } else {\n return this.getToken(sequenceParser.DOT, i);\n }\n};\n\n\nFuncContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterFunc(this);\n\t}\n};\n\nFuncContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitFunc(this);\n\t}\n};\n\n\n\n\nsequenceParser.FuncContext = FuncContext;\n\nsequenceParser.prototype.func = function() {\n\n var localctx = new FuncContext(this, this._ctx, this.state);\n this.enterRule(localctx, 44, sequenceParser.RULE_func);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 336;\n this.signature();\n this.state = 341;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,50,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n this.state = 337;\n this.match(sequenceParser.DOT);\n this.state = 338;\n this.signature(); \n }\n this.state = 343;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,50,this._ctx);\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction FromContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_from;\n return this;\n}\n\nFromContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nFromContext.prototype.constructor = FromContext;\n\nFromContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nFromContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nFromContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterFrom(this);\n\t}\n};\n\nFromContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitFrom(this);\n\t}\n};\n\n\n\n\nsequenceParser.FromContext = FromContext;\n\nsequenceParser.prototype.from = function() {\n\n var localctx = new FromContext(this, this._ctx, this.state);\n this.enterRule(localctx, 46, sequenceParser.RULE_from);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 344;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ToContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_to;\n return this;\n}\n\nToContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nToContext.prototype.constructor = ToContext;\n\nToContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nToContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nToContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterTo(this);\n\t}\n};\n\nToContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitTo(this);\n\t}\n};\n\n\n\n\nsequenceParser.ToContext = ToContext;\n\nsequenceParser.prototype.to = function() {\n\n var localctx = new ToContext(this, this._ctx, this.state);\n this.enterRule(localctx, 48, sequenceParser.RULE_to);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 346;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction SignatureContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_signature;\n return this;\n}\n\nSignatureContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nSignatureContext.prototype.constructor = SignatureContext;\n\nSignatureContext.prototype.methodName = function() {\n return this.getTypedRuleContext(MethodNameContext,0);\n};\n\nSignatureContext.prototype.invocation = function() {\n return this.getTypedRuleContext(InvocationContext,0);\n};\n\nSignatureContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterSignature(this);\n\t}\n};\n\nSignatureContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitSignature(this);\n\t}\n};\n\n\n\n\nsequenceParser.SignatureContext = SignatureContext;\n\nsequenceParser.prototype.signature = function() {\n\n var localctx = new SignatureContext(this, this._ctx, this.state);\n this.enterRule(localctx, 50, sequenceParser.RULE_signature);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 348;\n this.methodName();\n this.state = 350;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,51,this._ctx);\n if(la_===1) {\n this.state = 349;\n this.invocation();\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction InvocationContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_invocation;\n return this;\n}\n\nInvocationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nInvocationContext.prototype.constructor = InvocationContext;\n\nInvocationContext.prototype.OPAR = function() {\n return this.getToken(sequenceParser.OPAR, 0);\n};\n\nInvocationContext.prototype.CPAR = function() {\n return this.getToken(sequenceParser.CPAR, 0);\n};\n\nInvocationContext.prototype.parameters = function() {\n return this.getTypedRuleContext(ParametersContext,0);\n};\n\nInvocationContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterInvocation(this);\n\t}\n};\n\nInvocationContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitInvocation(this);\n\t}\n};\n\n\n\n\nsequenceParser.InvocationContext = InvocationContext;\n\nsequenceParser.prototype.invocation = function() {\n\n var localctx = new InvocationContext(this, this._ctx, this.state);\n this.enterRule(localctx, 52, sequenceParser.RULE_invocation);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 352;\n this.match(sequenceParser.OPAR);\n this.state = 354;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.MINUS) | (1 << sequenceParser.NOT) | (1 << sequenceParser.OPAR) | (1 << sequenceParser.TRUE) | (1 << sequenceParser.FALSE) | (1 << sequenceParser.NIL))) !== 0) || ((((_la - 36)) & ~0x1f) == 0 && ((1 << (_la - 36)) & ((1 << (sequenceParser.NEW - 36)) | (1 << (sequenceParser.ID - 36)) | (1 << (sequenceParser.INT - 36)) | (1 << (sequenceParser.FLOAT - 36)) | (1 << (sequenceParser.STRING - 36)))) !== 0)) {\n this.state = 353;\n this.parameters();\n }\n\n this.state = 356;\n this.match(sequenceParser.CPAR);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction AssignmentContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_assignment;\n return this;\n}\n\nAssignmentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nAssignmentContext.prototype.constructor = AssignmentContext;\n\nAssignmentContext.prototype.assignee = function() {\n return this.getTypedRuleContext(AssigneeContext,0);\n};\n\nAssignmentContext.prototype.ASSIGN = function() {\n return this.getToken(sequenceParser.ASSIGN, 0);\n};\n\nAssignmentContext.prototype.type = function() {\n return this.getTypedRuleContext(TypeContext,0);\n};\n\nAssignmentContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAssignment(this);\n\t}\n};\n\nAssignmentContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAssignment(this);\n\t}\n};\n\n\n\n\nsequenceParser.AssignmentContext = AssignmentContext;\n\nsequenceParser.prototype.assignment = function() {\n\n var localctx = new AssignmentContext(this, this._ctx, this.state);\n this.enterRule(localctx, 54, sequenceParser.RULE_assignment);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 359;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,53,this._ctx);\n if(la_===1) {\n this.state = 358;\n this.type();\n\n }\n this.state = 361;\n this.assignee();\n this.state = 362;\n this.match(sequenceParser.ASSIGN);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction AsyncMessageContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_asyncMessage;\n return this;\n}\n\nAsyncMessageContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nAsyncMessageContext.prototype.constructor = AsyncMessageContext;\n\nAsyncMessageContext.prototype.to = function() {\n return this.getTypedRuleContext(ToContext,0);\n};\n\nAsyncMessageContext.prototype.COL = function() {\n return this.getToken(sequenceParser.COL, 0);\n};\n\nAsyncMessageContext.prototype.content = function() {\n return this.getTypedRuleContext(ContentContext,0);\n};\n\nAsyncMessageContext.prototype.from = function() {\n return this.getTypedRuleContext(FromContext,0);\n};\n\nAsyncMessageContext.prototype.ARROW = function() {\n return this.getToken(sequenceParser.ARROW, 0);\n};\n\nAsyncMessageContext.prototype.MINUS = function() {\n return this.getToken(sequenceParser.MINUS, 0);\n};\n\nAsyncMessageContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAsyncMessage(this);\n\t}\n};\n\nAsyncMessageContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAsyncMessage(this);\n\t}\n};\n\n\n\n\nsequenceParser.AsyncMessageContext = AsyncMessageContext;\n\nsequenceParser.prototype.asyncMessage = function() {\n\n var localctx = new AsyncMessageContext(this, this._ctx, this.state);\n this.enterRule(localctx, 56, sequenceParser.RULE_asyncMessage);\n var _la = 0; // Token type\n try {\n this.state = 378;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,56,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 367;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,54,this._ctx);\n if(la_===1) {\n this.state = 364;\n this.from();\n this.state = 365;\n this.match(sequenceParser.ARROW);\n\n }\n this.state = 369;\n this.to();\n this.state = 370;\n this.match(sequenceParser.COL);\n this.state = 371;\n this.content();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 373;\n this.from();\n this.state = 374;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ARROW || _la===sequenceParser.MINUS)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 376;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,55,this._ctx);\n if(la_===1) {\n this.state = 375;\n this.to();\n\n }\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ContentContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_content;\n return this;\n}\n\nContentContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nContentContext.prototype.constructor = ContentContext;\n\nContentContext.prototype.EVENT_PAYLOAD_LXR = function() {\n return this.getToken(sequenceParser.EVENT_PAYLOAD_LXR, 0);\n};\n\nContentContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterContent(this);\n\t}\n};\n\nContentContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitContent(this);\n\t}\n};\n\n\n\n\nsequenceParser.ContentContext = ContentContext;\n\nsequenceParser.prototype.content = function() {\n\n var localctx = new ContentContext(this, this._ctx, this.state);\n this.enterRule(localctx, 58, sequenceParser.RULE_content);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 380;\n this.match(sequenceParser.EVENT_PAYLOAD_LXR);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ConstructContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_construct;\n return this;\n}\n\nConstructContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nConstructContext.prototype.constructor = ConstructContext;\n\nConstructContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nConstructContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nConstructContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterConstruct(this);\n\t}\n};\n\nConstructContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitConstruct(this);\n\t}\n};\n\n\n\n\nsequenceParser.ConstructContext = ConstructContext;\n\nsequenceParser.prototype.construct = function() {\n\n var localctx = new ConstructContext(this, this._ctx, this.state);\n this.enterRule(localctx, 60, sequenceParser.RULE_construct);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 382;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction TypeContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_type;\n return this;\n}\n\nTypeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nTypeContext.prototype.constructor = TypeContext;\n\nTypeContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nTypeContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nTypeContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterType(this);\n\t}\n};\n\nTypeContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitType(this);\n\t}\n};\n\n\n\n\nsequenceParser.TypeContext = TypeContext;\n\nsequenceParser.prototype.type = function() {\n\n var localctx = new TypeContext(this, this._ctx, this.state);\n this.enterRule(localctx, 62, sequenceParser.RULE_type);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 384;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction AssigneeContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_assignee;\n return this;\n}\n\nAssigneeContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nAssigneeContext.prototype.constructor = AssigneeContext;\n\nAssigneeContext.prototype.atom = function() {\n return this.getTypedRuleContext(AtomContext,0);\n};\n\nAssigneeContext.prototype.ID = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.ID);\n } else {\n return this.getToken(sequenceParser.ID, i);\n }\n};\n\n\nAssigneeContext.prototype.COMMA = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.COMMA);\n } else {\n return this.getToken(sequenceParser.COMMA, i);\n }\n};\n\n\nAssigneeContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nAssigneeContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAssignee(this);\n\t}\n};\n\nAssigneeContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAssignee(this);\n\t}\n};\n\n\n\n\nsequenceParser.AssigneeContext = AssigneeContext;\n\nsequenceParser.prototype.assignee = function() {\n\n var localctx = new AssigneeContext(this, this._ctx, this.state);\n this.enterRule(localctx, 64, sequenceParser.RULE_assignee);\n var _la = 0; // Token type\n try {\n this.state = 396;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,58,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 386;\n this.atom();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 387;\n this.match(sequenceParser.ID);\n this.state = 392;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n while(_la===sequenceParser.COMMA) {\n this.state = 388;\n this.match(sequenceParser.COMMA);\n this.state = 389;\n this.match(sequenceParser.ID);\n this.state = 394;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n }\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 395;\n this.match(sequenceParser.STRING);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction MethodNameContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_methodName;\n return this;\n}\n\nMethodNameContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nMethodNameContext.prototype.constructor = MethodNameContext;\n\nMethodNameContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nMethodNameContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\n\nMethodNameContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterMethodName(this);\n\t}\n};\n\nMethodNameContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitMethodName(this);\n\t}\n};\n\n\n\n\nsequenceParser.MethodNameContext = MethodNameContext;\n\nsequenceParser.prototype.methodName = function() {\n\n var localctx = new MethodNameContext(this, this._ctx, this.state);\n this.enterRule(localctx, 66, sequenceParser.RULE_methodName);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 398;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.ID || _la===sequenceParser.STRING)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParametersContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parameters;\n return this;\n}\n\nParametersContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParametersContext.prototype.constructor = ParametersContext;\n\nParametersContext.prototype.parameter = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ParameterContext);\n } else {\n return this.getTypedRuleContext(ParameterContext,i);\n }\n};\n\nParametersContext.prototype.COMMA = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.COMMA);\n } else {\n return this.getToken(sequenceParser.COMMA, i);\n }\n};\n\n\nParametersContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParameters(this);\n\t}\n};\n\nParametersContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParameters(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParametersContext = ParametersContext;\n\nsequenceParser.prototype.parameters = function() {\n\n var localctx = new ParametersContext(this, this._ctx, this.state);\n this.enterRule(localctx, 68, sequenceParser.RULE_parameters);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 400;\n this.parameter();\n this.state = 405;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,59,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n this.state = 401;\n this.match(sequenceParser.COMMA);\n this.state = 402;\n this.parameter(); \n }\n this.state = 407;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,59,this._ctx);\n }\n\n this.state = 409;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.COMMA) {\n this.state = 408;\n this.match(sequenceParser.COMMA);\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParameterContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parameter;\n return this;\n}\n\nParameterContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParameterContext.prototype.constructor = ParameterContext;\n\nParameterContext.prototype.declaration = function() {\n return this.getTypedRuleContext(DeclarationContext,0);\n};\n\nParameterContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\n\nParameterContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParameter(this);\n\t}\n};\n\nParameterContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParameter(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParameterContext = ParameterContext;\n\nsequenceParser.prototype.parameter = function() {\n\n var localctx = new ParameterContext(this, this._ctx, this.state);\n this.enterRule(localctx, 70, sequenceParser.RULE_parameter);\n try {\n this.state = 413;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,61,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 411;\n this.declaration();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 412;\n this.expr(0);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction DeclarationContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_declaration;\n return this;\n}\n\nDeclarationContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nDeclarationContext.prototype.constructor = DeclarationContext;\n\nDeclarationContext.prototype.type = function() {\n return this.getTypedRuleContext(TypeContext,0);\n};\n\nDeclarationContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\n\nDeclarationContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterDeclaration(this);\n\t}\n};\n\nDeclarationContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitDeclaration(this);\n\t}\n};\n\n\n\n\nsequenceParser.DeclarationContext = DeclarationContext;\n\nsequenceParser.prototype.declaration = function() {\n\n var localctx = new DeclarationContext(this, this._ctx, this.state);\n this.enterRule(localctx, 72, sequenceParser.RULE_declaration);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 415;\n this.type();\n this.state = 416;\n this.match(sequenceParser.ID);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction TcfContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_tcf;\n return this;\n}\n\nTcfContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nTcfContext.prototype.constructor = TcfContext;\n\nTcfContext.prototype.tryBlock = function() {\n return this.getTypedRuleContext(TryBlockContext,0);\n};\n\nTcfContext.prototype.catchBlock = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(CatchBlockContext);\n } else {\n return this.getTypedRuleContext(CatchBlockContext,i);\n }\n};\n\nTcfContext.prototype.finallyBlock = function() {\n return this.getTypedRuleContext(FinallyBlockContext,0);\n};\n\nTcfContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterTcf(this);\n\t}\n};\n\nTcfContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitTcf(this);\n\t}\n};\n\n\n\n\nsequenceParser.TcfContext = TcfContext;\n\nsequenceParser.prototype.tcf = function() {\n\n var localctx = new TcfContext(this, this._ctx, this.state);\n this.enterRule(localctx, 74, sequenceParser.RULE_tcf);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 418;\n this.tryBlock();\n this.state = 422;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n while(_la===sequenceParser.CATCH) {\n this.state = 419;\n this.catchBlock();\n this.state = 424;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n }\n this.state = 426;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.FINALLY) {\n this.state = 425;\n this.finallyBlock();\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction TryBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_tryBlock;\n return this;\n}\n\nTryBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nTryBlockContext.prototype.constructor = TryBlockContext;\n\nTryBlockContext.prototype.TRY = function() {\n return this.getToken(sequenceParser.TRY, 0);\n};\n\nTryBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nTryBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterTryBlock(this);\n\t}\n};\n\nTryBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitTryBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.TryBlockContext = TryBlockContext;\n\nsequenceParser.prototype.tryBlock = function() {\n\n var localctx = new TryBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 76, sequenceParser.RULE_tryBlock);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 428;\n this.match(sequenceParser.TRY);\n this.state = 429;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction CatchBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_catchBlock;\n return this;\n}\n\nCatchBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nCatchBlockContext.prototype.constructor = CatchBlockContext;\n\nCatchBlockContext.prototype.CATCH = function() {\n return this.getToken(sequenceParser.CATCH, 0);\n};\n\nCatchBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nCatchBlockContext.prototype.invocation = function() {\n return this.getTypedRuleContext(InvocationContext,0);\n};\n\nCatchBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterCatchBlock(this);\n\t}\n};\n\nCatchBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitCatchBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.CatchBlockContext = CatchBlockContext;\n\nsequenceParser.prototype.catchBlock = function() {\n\n var localctx = new CatchBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 78, sequenceParser.RULE_catchBlock);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 431;\n this.match(sequenceParser.CATCH);\n this.state = 433;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.OPAR) {\n this.state = 432;\n this.invocation();\n }\n\n this.state = 435;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction FinallyBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_finallyBlock;\n return this;\n}\n\nFinallyBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nFinallyBlockContext.prototype.constructor = FinallyBlockContext;\n\nFinallyBlockContext.prototype.FINALLY = function() {\n return this.getToken(sequenceParser.FINALLY, 0);\n};\n\nFinallyBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nFinallyBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterFinallyBlock(this);\n\t}\n};\n\nFinallyBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitFinallyBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.FinallyBlockContext = FinallyBlockContext;\n\nsequenceParser.prototype.finallyBlock = function() {\n\n var localctx = new FinallyBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 80, sequenceParser.RULE_finallyBlock);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 437;\n this.match(sequenceParser.FINALLY);\n this.state = 438;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction AltContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_alt;\n return this;\n}\n\nAltContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nAltContext.prototype.constructor = AltContext;\n\nAltContext.prototype.ifBlock = function() {\n return this.getTypedRuleContext(IfBlockContext,0);\n};\n\nAltContext.prototype.elseIfBlock = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ElseIfBlockContext);\n } else {\n return this.getTypedRuleContext(ElseIfBlockContext,i);\n }\n};\n\nAltContext.prototype.elseBlock = function() {\n return this.getTypedRuleContext(ElseBlockContext,0);\n};\n\nAltContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAlt(this);\n\t}\n};\n\nAltContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAlt(this);\n\t}\n};\n\n\n\n\nsequenceParser.AltContext = AltContext;\n\nsequenceParser.prototype.alt = function() {\n\n var localctx = new AltContext(this, this._ctx, this.state);\n this.enterRule(localctx, 82, sequenceParser.RULE_alt);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 440;\n this.ifBlock();\n this.state = 444;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,65,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n this.state = 441;\n this.elseIfBlock(); \n }\n this.state = 446;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,65,this._ctx);\n }\n\n this.state = 448;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if(_la===sequenceParser.ELSE) {\n this.state = 447;\n this.elseBlock();\n }\n\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction IfBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_ifBlock;\n return this;\n}\n\nIfBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nIfBlockContext.prototype.constructor = IfBlockContext;\n\nIfBlockContext.prototype.IF = function() {\n return this.getToken(sequenceParser.IF, 0);\n};\n\nIfBlockContext.prototype.parExpr = function() {\n return this.getTypedRuleContext(ParExprContext,0);\n};\n\nIfBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nIfBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterIfBlock(this);\n\t}\n};\n\nIfBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitIfBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.IfBlockContext = IfBlockContext;\n\nsequenceParser.prototype.ifBlock = function() {\n\n var localctx = new IfBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 84, sequenceParser.RULE_ifBlock);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 450;\n this.match(sequenceParser.IF);\n this.state = 451;\n this.parExpr();\n this.state = 452;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ElseIfBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_elseIfBlock;\n return this;\n}\n\nElseIfBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nElseIfBlockContext.prototype.constructor = ElseIfBlockContext;\n\nElseIfBlockContext.prototype.ELSE = function() {\n return this.getToken(sequenceParser.ELSE, 0);\n};\n\nElseIfBlockContext.prototype.IF = function() {\n return this.getToken(sequenceParser.IF, 0);\n};\n\nElseIfBlockContext.prototype.parExpr = function() {\n return this.getTypedRuleContext(ParExprContext,0);\n};\n\nElseIfBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nElseIfBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterElseIfBlock(this);\n\t}\n};\n\nElseIfBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitElseIfBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.ElseIfBlockContext = ElseIfBlockContext;\n\nsequenceParser.prototype.elseIfBlock = function() {\n\n var localctx = new ElseIfBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 86, sequenceParser.RULE_elseIfBlock);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 454;\n this.match(sequenceParser.ELSE);\n this.state = 455;\n this.match(sequenceParser.IF);\n this.state = 456;\n this.parExpr();\n this.state = 457;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ElseBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_elseBlock;\n return this;\n}\n\nElseBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nElseBlockContext.prototype.constructor = ElseBlockContext;\n\nElseBlockContext.prototype.ELSE = function() {\n return this.getToken(sequenceParser.ELSE, 0);\n};\n\nElseBlockContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nElseBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterElseBlock(this);\n\t}\n};\n\nElseBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitElseBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.ElseBlockContext = ElseBlockContext;\n\nsequenceParser.prototype.elseBlock = function() {\n\n var localctx = new ElseBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 88, sequenceParser.RULE_elseBlock);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 459;\n this.match(sequenceParser.ELSE);\n this.state = 460;\n this.braceBlock();\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction BraceBlockContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_braceBlock;\n return this;\n}\n\nBraceBlockContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nBraceBlockContext.prototype.constructor = BraceBlockContext;\n\nBraceBlockContext.prototype.OBRACE = function() {\n return this.getToken(sequenceParser.OBRACE, 0);\n};\n\nBraceBlockContext.prototype.CBRACE = function() {\n return this.getToken(sequenceParser.CBRACE, 0);\n};\n\nBraceBlockContext.prototype.block = function() {\n return this.getTypedRuleContext(BlockContext,0);\n};\n\nBraceBlockContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterBraceBlock(this);\n\t}\n};\n\nBraceBlockContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitBraceBlock(this);\n\t}\n};\n\n\n\n\nsequenceParser.BraceBlockContext = BraceBlockContext;\n\nsequenceParser.prototype.braceBlock = function() {\n\n var localctx = new BraceBlockContext(this, this._ctx, this.state);\n this.enterRule(localctx, 90, sequenceParser.RULE_braceBlock);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 462;\n this.match(sequenceParser.OBRACE);\n this.state = 464;\n this._errHandler.sync(this);\n _la = this._input.LA(1);\n if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.EQ) | (1 << sequenceParser.TRUE) | (1 << sequenceParser.FALSE) | (1 << sequenceParser.NIL))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (sequenceParser.IF - 32)) | (1 << (sequenceParser.WHILE - 32)) | (1 << (sequenceParser.RETURN - 32)) | (1 << (sequenceParser.NEW - 32)) | (1 << (sequenceParser.PAR - 32)) | (1 << (sequenceParser.OPT - 32)) | (1 << (sequenceParser.TRY - 32)) | (1 << (sequenceParser.ANNOTATION_RET - 32)) | (1 << (sequenceParser.ID - 32)) | (1 << (sequenceParser.INT - 32)) | (1 << (sequenceParser.FLOAT - 32)) | (1 << (sequenceParser.STRING - 32)) | (1 << (sequenceParser.OTHER - 32)))) !== 0)) {\n this.state = 463;\n this.block();\n }\n\n this.state = 466;\n this.match(sequenceParser.CBRACE);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction LoopContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_loop;\n return this;\n}\n\nLoopContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nLoopContext.prototype.constructor = LoopContext;\n\nLoopContext.prototype.WHILE = function() {\n return this.getToken(sequenceParser.WHILE, 0);\n};\n\nLoopContext.prototype.parExpr = function() {\n return this.getTypedRuleContext(ParExprContext,0);\n};\n\nLoopContext.prototype.braceBlock = function() {\n return this.getTypedRuleContext(BraceBlockContext,0);\n};\n\nLoopContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterLoop(this);\n\t}\n};\n\nLoopContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitLoop(this);\n\t}\n};\n\n\n\n\nsequenceParser.LoopContext = LoopContext;\n\nsequenceParser.prototype.loop = function() {\n\n var localctx = new LoopContext(this, this._ctx, this.state);\n this.enterRule(localctx, 92, sequenceParser.RULE_loop);\n try {\n this.state = 475;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,68,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 468;\n this.match(sequenceParser.WHILE);\n this.state = 469;\n this.parExpr();\n this.state = 470;\n this.braceBlock();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 472;\n this.match(sequenceParser.WHILE);\n this.state = 473;\n this.parExpr();\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 474;\n this.match(sequenceParser.WHILE);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ExprContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_expr;\n return this;\n}\n\nExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nExprContext.prototype.constructor = ExprContext;\n\n\n \nExprContext.prototype.copyFrom = function(ctx) {\n antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);\n};\n\nfunction AssignmentExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nAssignmentExprContext.prototype = Object.create(ExprContext.prototype);\nAssignmentExprContext.prototype.constructor = AssignmentExprContext;\n\nsequenceParser.AssignmentExprContext = AssignmentExprContext;\n\nAssignmentExprContext.prototype.assignment = function() {\n return this.getTypedRuleContext(AssignmentContext,0);\n};\n\nAssignmentExprContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\nAssignmentExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAssignmentExpr(this);\n\t}\n};\n\nAssignmentExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAssignmentExpr(this);\n\t}\n};\n\n\nfunction FuncExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nFuncExprContext.prototype = Object.create(ExprContext.prototype);\nFuncExprContext.prototype.constructor = FuncExprContext;\n\nsequenceParser.FuncExprContext = FuncExprContext;\n\nFuncExprContext.prototype.func = function() {\n return this.getTypedRuleContext(FuncContext,0);\n};\n\nFuncExprContext.prototype.to = function() {\n return this.getTypedRuleContext(ToContext,0);\n};\n\nFuncExprContext.prototype.DOT = function() {\n return this.getToken(sequenceParser.DOT, 0);\n};\nFuncExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterFuncExpr(this);\n\t}\n};\n\nFuncExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitFuncExpr(this);\n\t}\n};\n\n\nfunction AtomExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nAtomExprContext.prototype = Object.create(ExprContext.prototype);\nAtomExprContext.prototype.constructor = AtomExprContext;\n\nsequenceParser.AtomExprContext = AtomExprContext;\n\nAtomExprContext.prototype.atom = function() {\n return this.getTypedRuleContext(AtomContext,0);\n};\nAtomExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAtomExpr(this);\n\t}\n};\n\nAtomExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAtomExpr(this);\n\t}\n};\n\n\nfunction OrExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nOrExprContext.prototype = Object.create(ExprContext.prototype);\nOrExprContext.prototype.constructor = OrExprContext;\n\nsequenceParser.OrExprContext = OrExprContext;\n\nOrExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nOrExprContext.prototype.OR = function() {\n return this.getToken(sequenceParser.OR, 0);\n};\nOrExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterOrExpr(this);\n\t}\n};\n\nOrExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitOrExpr(this);\n\t}\n};\n\n\nfunction AdditiveExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n this.op = null; // Token;\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nAdditiveExprContext.prototype = Object.create(ExprContext.prototype);\nAdditiveExprContext.prototype.constructor = AdditiveExprContext;\n\nsequenceParser.AdditiveExprContext = AdditiveExprContext;\n\nAdditiveExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nAdditiveExprContext.prototype.PLUS = function() {\n return this.getToken(sequenceParser.PLUS, 0);\n};\n\nAdditiveExprContext.prototype.MINUS = function() {\n return this.getToken(sequenceParser.MINUS, 0);\n};\nAdditiveExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAdditiveExpr(this);\n\t}\n};\n\nAdditiveExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAdditiveExpr(this);\n\t}\n};\n\n\nfunction RelationalExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n this.op = null; // Token;\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nRelationalExprContext.prototype = Object.create(ExprContext.prototype);\nRelationalExprContext.prototype.constructor = RelationalExprContext;\n\nsequenceParser.RelationalExprContext = RelationalExprContext;\n\nRelationalExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nRelationalExprContext.prototype.LTEQ = function() {\n return this.getToken(sequenceParser.LTEQ, 0);\n};\n\nRelationalExprContext.prototype.GTEQ = function() {\n return this.getToken(sequenceParser.GTEQ, 0);\n};\n\nRelationalExprContext.prototype.LT = function() {\n return this.getToken(sequenceParser.LT, 0);\n};\n\nRelationalExprContext.prototype.GT = function() {\n return this.getToken(sequenceParser.GT, 0);\n};\nRelationalExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterRelationalExpr(this);\n\t}\n};\n\nRelationalExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitRelationalExpr(this);\n\t}\n};\n\n\nfunction PlusExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nPlusExprContext.prototype = Object.create(ExprContext.prototype);\nPlusExprContext.prototype.constructor = PlusExprContext;\n\nsequenceParser.PlusExprContext = PlusExprContext;\n\nPlusExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nPlusExprContext.prototype.PLUS = function() {\n return this.getToken(sequenceParser.PLUS, 0);\n};\nPlusExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterPlusExpr(this);\n\t}\n};\n\nPlusExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitPlusExpr(this);\n\t}\n};\n\n\nfunction NotExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nNotExprContext.prototype = Object.create(ExprContext.prototype);\nNotExprContext.prototype.constructor = NotExprContext;\n\nsequenceParser.NotExprContext = NotExprContext;\n\nNotExprContext.prototype.NOT = function() {\n return this.getToken(sequenceParser.NOT, 0);\n};\n\nNotExprContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\nNotExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterNotExpr(this);\n\t}\n};\n\nNotExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitNotExpr(this);\n\t}\n};\n\n\nfunction UnaryMinusExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nUnaryMinusExprContext.prototype = Object.create(ExprContext.prototype);\nUnaryMinusExprContext.prototype.constructor = UnaryMinusExprContext;\n\nsequenceParser.UnaryMinusExprContext = UnaryMinusExprContext;\n\nUnaryMinusExprContext.prototype.MINUS = function() {\n return this.getToken(sequenceParser.MINUS, 0);\n};\n\nUnaryMinusExprContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\nUnaryMinusExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterUnaryMinusExpr(this);\n\t}\n};\n\nUnaryMinusExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitUnaryMinusExpr(this);\n\t}\n};\n\n\nfunction CreationExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nCreationExprContext.prototype = Object.create(ExprContext.prototype);\nCreationExprContext.prototype.constructor = CreationExprContext;\n\nsequenceParser.CreationExprContext = CreationExprContext;\n\nCreationExprContext.prototype.creation = function() {\n return this.getTypedRuleContext(CreationContext,0);\n};\nCreationExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterCreationExpr(this);\n\t}\n};\n\nCreationExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitCreationExpr(this);\n\t}\n};\n\n\nfunction ParenthesizedExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nParenthesizedExprContext.prototype = Object.create(ExprContext.prototype);\nParenthesizedExprContext.prototype.constructor = ParenthesizedExprContext;\n\nsequenceParser.ParenthesizedExprContext = ParenthesizedExprContext;\n\nParenthesizedExprContext.prototype.OPAR = function() {\n return this.getToken(sequenceParser.OPAR, 0);\n};\n\nParenthesizedExprContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\n\nParenthesizedExprContext.prototype.CPAR = function() {\n return this.getToken(sequenceParser.CPAR, 0);\n};\nParenthesizedExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParenthesizedExpr(this);\n\t}\n};\n\nParenthesizedExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParenthesizedExpr(this);\n\t}\n};\n\n\nfunction MultiplicationExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n this.op = null; // Token;\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nMultiplicationExprContext.prototype = Object.create(ExprContext.prototype);\nMultiplicationExprContext.prototype.constructor = MultiplicationExprContext;\n\nsequenceParser.MultiplicationExprContext = MultiplicationExprContext;\n\nMultiplicationExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nMultiplicationExprContext.prototype.MULT = function() {\n return this.getToken(sequenceParser.MULT, 0);\n};\n\nMultiplicationExprContext.prototype.DIV = function() {\n return this.getToken(sequenceParser.DIV, 0);\n};\n\nMultiplicationExprContext.prototype.MOD = function() {\n return this.getToken(sequenceParser.MOD, 0);\n};\nMultiplicationExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterMultiplicationExpr(this);\n\t}\n};\n\nMultiplicationExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitMultiplicationExpr(this);\n\t}\n};\n\n\nfunction EqualityExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n this.op = null; // Token;\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nEqualityExprContext.prototype = Object.create(ExprContext.prototype);\nEqualityExprContext.prototype.constructor = EqualityExprContext;\n\nsequenceParser.EqualityExprContext = EqualityExprContext;\n\nEqualityExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nEqualityExprContext.prototype.EQ = function() {\n return this.getToken(sequenceParser.EQ, 0);\n};\n\nEqualityExprContext.prototype.NEQ = function() {\n return this.getToken(sequenceParser.NEQ, 0);\n};\nEqualityExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterEqualityExpr(this);\n\t}\n};\n\nEqualityExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitEqualityExpr(this);\n\t}\n};\n\n\nfunction AndExprContext(parser, ctx) {\n\tExprContext.call(this, parser);\n ExprContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nAndExprContext.prototype = Object.create(ExprContext.prototype);\nAndExprContext.prototype.constructor = AndExprContext;\n\nsequenceParser.AndExprContext = AndExprContext;\n\nAndExprContext.prototype.expr = function(i) {\n if(i===undefined) {\n i = null;\n }\n if(i===null) {\n return this.getTypedRuleContexts(ExprContext);\n } else {\n return this.getTypedRuleContext(ExprContext,i);\n }\n};\n\nAndExprContext.prototype.AND = function() {\n return this.getToken(sequenceParser.AND, 0);\n};\nAndExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterAndExpr(this);\n\t}\n};\n\nAndExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitAndExpr(this);\n\t}\n};\n\n\n\nsequenceParser.prototype.expr = function(_p) {\n\tif(_p===undefined) {\n\t _p = 0;\n\t}\n var _parentctx = this._ctx;\n var _parentState = this.state;\n var localctx = new ExprContext(this, this._ctx, _parentState);\n var _prevctx = localctx;\n var _startState = 94;\n this.enterRecursionRule(localctx, 94, sequenceParser.RULE_expr, _p);\n var _la = 0; // Token type\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 497;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,70,this._ctx);\n switch(la_) {\n case 1:\n localctx = new UnaryMinusExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n\n this.state = 478;\n this.match(sequenceParser.MINUS);\n this.state = 479;\n this.expr(14);\n break;\n\n case 2:\n localctx = new NotExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 480;\n this.match(sequenceParser.NOT);\n this.state = 481;\n this.expr(13);\n break;\n\n case 3:\n localctx = new FuncExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 485;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,69,this._ctx);\n if(la_===1) {\n this.state = 482;\n this.to();\n this.state = 483;\n this.match(sequenceParser.DOT);\n\n }\n this.state = 487;\n this.func();\n break;\n\n case 4:\n localctx = new CreationExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 488;\n this.creation();\n break;\n\n case 5:\n localctx = new AtomExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 489;\n this.atom();\n break;\n\n case 6:\n localctx = new ParenthesizedExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 490;\n this.match(sequenceParser.OPAR);\n this.state = 491;\n this.expr(0);\n this.state = 492;\n this.match(sequenceParser.CPAR);\n break;\n\n case 7:\n localctx = new AssignmentExprContext(this, localctx);\n this._ctx = localctx;\n _prevctx = localctx;\n this.state = 494;\n this.assignment();\n this.state = 495;\n this.expr(1);\n break;\n\n }\n this._ctx.stop = this._input.LT(-1);\n this.state = 522;\n this._errHandler.sync(this);\n var _alt = this._interp.adaptivePredict(this._input,72,this._ctx)\n while(_alt!=2 && _alt!=antlr4.atn.ATN.INVALID_ALT_NUMBER) {\n if(_alt===1) {\n if(this._parseListeners!==null) {\n this.triggerExitRuleEvent();\n }\n _prevctx = localctx;\n this.state = 520;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,71,this._ctx);\n switch(la_) {\n case 1:\n localctx = new MultiplicationExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 499;\n if (!( this.precpred(this._ctx, 12))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 12)\");\n }\n this.state = 500;\n localctx.op = this._input.LT(1);\n _la = this._input.LA(1);\n if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.MULT) | (1 << sequenceParser.DIV) | (1 << sequenceParser.MOD))) !== 0))) {\n localctx.op = this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 501;\n this.expr(13);\n break;\n\n case 2:\n localctx = new AdditiveExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 502;\n if (!( this.precpred(this._ctx, 11))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 11)\");\n }\n this.state = 503;\n localctx.op = this._input.LT(1);\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.PLUS || _la===sequenceParser.MINUS)) {\n localctx.op = this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 504;\n this.expr(12);\n break;\n\n case 3:\n localctx = new RelationalExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 505;\n if (!( this.precpred(this._ctx, 10))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 10)\");\n }\n this.state = 506;\n localctx.op = this._input.LT(1);\n _la = this._input.LA(1);\n if(!((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << sequenceParser.GT) | (1 << sequenceParser.LT) | (1 << sequenceParser.GTEQ) | (1 << sequenceParser.LTEQ))) !== 0))) {\n localctx.op = this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 507;\n this.expr(11);\n break;\n\n case 4:\n localctx = new EqualityExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 508;\n if (!( this.precpred(this._ctx, 9))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 9)\");\n }\n this.state = 509;\n localctx.op = this._input.LT(1);\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.EQ || _la===sequenceParser.NEQ)) {\n localctx.op = this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n this.state = 510;\n this.expr(10);\n break;\n\n case 5:\n localctx = new AndExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 511;\n if (!( this.precpred(this._ctx, 8))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 8)\");\n }\n this.state = 512;\n this.match(sequenceParser.AND);\n this.state = 513;\n this.expr(9);\n break;\n\n case 6:\n localctx = new OrExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 514;\n if (!( this.precpred(this._ctx, 7))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 7)\");\n }\n this.state = 515;\n this.match(sequenceParser.OR);\n this.state = 516;\n this.expr(8);\n break;\n\n case 7:\n localctx = new PlusExprContext(this, new ExprContext(this, _parentctx, _parentState));\n this.pushNewRecursionContext(localctx, _startState, sequenceParser.RULE_expr);\n this.state = 517;\n if (!( this.precpred(this._ctx, 6))) {\n throw new antlr4.error.FailedPredicateException(this, \"this.precpred(this._ctx, 6)\");\n }\n this.state = 518;\n this.match(sequenceParser.PLUS);\n this.state = 519;\n this.expr(7);\n break;\n\n } \n }\n this.state = 524;\n this._errHandler.sync(this);\n _alt = this._interp.adaptivePredict(this._input,72,this._ctx);\n }\n\n } catch( error) {\n if(error instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = error;\n\t this._errHandler.reportError(this, error);\n\t this._errHandler.recover(this, error);\n\t } else {\n\t \tthrow error;\n\t }\n } finally {\n this.unrollRecursionContexts(_parentctx)\n }\n return localctx;\n};\n\n\nfunction AtomContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_atom;\n return this;\n}\n\nAtomContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nAtomContext.prototype.constructor = AtomContext;\n\n\n \nAtomContext.prototype.copyFrom = function(ctx) {\n antlr4.ParserRuleContext.prototype.copyFrom.call(this, ctx);\n};\n\n\nfunction BooleanAtomContext(parser, ctx) {\n\tAtomContext.call(this, parser);\n AtomContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nBooleanAtomContext.prototype = Object.create(AtomContext.prototype);\nBooleanAtomContext.prototype.constructor = BooleanAtomContext;\n\nsequenceParser.BooleanAtomContext = BooleanAtomContext;\n\nBooleanAtomContext.prototype.TRUE = function() {\n return this.getToken(sequenceParser.TRUE, 0);\n};\n\nBooleanAtomContext.prototype.FALSE = function() {\n return this.getToken(sequenceParser.FALSE, 0);\n};\nBooleanAtomContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterBooleanAtom(this);\n\t}\n};\n\nBooleanAtomContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitBooleanAtom(this);\n\t}\n};\n\n\nfunction IdAtomContext(parser, ctx) {\n\tAtomContext.call(this, parser);\n AtomContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nIdAtomContext.prototype = Object.create(AtomContext.prototype);\nIdAtomContext.prototype.constructor = IdAtomContext;\n\nsequenceParser.IdAtomContext = IdAtomContext;\n\nIdAtomContext.prototype.ID = function() {\n return this.getToken(sequenceParser.ID, 0);\n};\nIdAtomContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterIdAtom(this);\n\t}\n};\n\nIdAtomContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitIdAtom(this);\n\t}\n};\n\n\nfunction StringAtomContext(parser, ctx) {\n\tAtomContext.call(this, parser);\n AtomContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nStringAtomContext.prototype = Object.create(AtomContext.prototype);\nStringAtomContext.prototype.constructor = StringAtomContext;\n\nsequenceParser.StringAtomContext = StringAtomContext;\n\nStringAtomContext.prototype.STRING = function() {\n return this.getToken(sequenceParser.STRING, 0);\n};\nStringAtomContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterStringAtom(this);\n\t}\n};\n\nStringAtomContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitStringAtom(this);\n\t}\n};\n\n\nfunction NilAtomContext(parser, ctx) {\n\tAtomContext.call(this, parser);\n AtomContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nNilAtomContext.prototype = Object.create(AtomContext.prototype);\nNilAtomContext.prototype.constructor = NilAtomContext;\n\nsequenceParser.NilAtomContext = NilAtomContext;\n\nNilAtomContext.prototype.NIL = function() {\n return this.getToken(sequenceParser.NIL, 0);\n};\nNilAtomContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterNilAtom(this);\n\t}\n};\n\nNilAtomContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitNilAtom(this);\n\t}\n};\n\n\nfunction NumberAtomContext(parser, ctx) {\n\tAtomContext.call(this, parser);\n AtomContext.prototype.copyFrom.call(this, ctx);\n return this;\n}\n\nNumberAtomContext.prototype = Object.create(AtomContext.prototype);\nNumberAtomContext.prototype.constructor = NumberAtomContext;\n\nsequenceParser.NumberAtomContext = NumberAtomContext;\n\nNumberAtomContext.prototype.INT = function() {\n return this.getToken(sequenceParser.INT, 0);\n};\n\nNumberAtomContext.prototype.FLOAT = function() {\n return this.getToken(sequenceParser.FLOAT, 0);\n};\nNumberAtomContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterNumberAtom(this);\n\t}\n};\n\nNumberAtomContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitNumberAtom(this);\n\t}\n};\n\n\n\nsequenceParser.AtomContext = AtomContext;\n\nsequenceParser.prototype.atom = function() {\n\n var localctx = new AtomContext(this, this._ctx, this.state);\n this.enterRule(localctx, 96, sequenceParser.RULE_atom);\n var _la = 0; // Token type\n try {\n this.state = 530;\n this._errHandler.sync(this);\n switch(this._input.LA(1)) {\n case sequenceParser.INT:\n case sequenceParser.FLOAT:\n localctx = new NumberAtomContext(this, localctx);\n this.enterOuterAlt(localctx, 1);\n this.state = 525;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.INT || _la===sequenceParser.FLOAT)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n break;\n case sequenceParser.TRUE:\n case sequenceParser.FALSE:\n localctx = new BooleanAtomContext(this, localctx);\n this.enterOuterAlt(localctx, 2);\n this.state = 526;\n _la = this._input.LA(1);\n if(!(_la===sequenceParser.TRUE || _la===sequenceParser.FALSE)) {\n this._errHandler.recoverInline(this);\n }\n else {\n \tthis._errHandler.reportMatch(this);\n this.consume();\n }\n break;\n case sequenceParser.ID:\n localctx = new IdAtomContext(this, localctx);\n this.enterOuterAlt(localctx, 3);\n this.state = 527;\n this.match(sequenceParser.ID);\n break;\n case sequenceParser.STRING:\n localctx = new StringAtomContext(this, localctx);\n this.enterOuterAlt(localctx, 4);\n this.state = 528;\n this.match(sequenceParser.STRING);\n break;\n case sequenceParser.NIL:\n localctx = new NilAtomContext(this, localctx);\n this.enterOuterAlt(localctx, 5);\n this.state = 529;\n this.match(sequenceParser.NIL);\n break;\n default:\n throw new antlr4.error.NoViableAltException(this);\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ParExprContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_parExpr;\n return this;\n}\n\nParExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nParExprContext.prototype.constructor = ParExprContext;\n\nParExprContext.prototype.OPAR = function() {\n return this.getToken(sequenceParser.OPAR, 0);\n};\n\nParExprContext.prototype.condition = function() {\n return this.getTypedRuleContext(ConditionContext,0);\n};\n\nParExprContext.prototype.CPAR = function() {\n return this.getToken(sequenceParser.CPAR, 0);\n};\n\nParExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterParExpr(this);\n\t}\n};\n\nParExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitParExpr(this);\n\t}\n};\n\n\n\n\nsequenceParser.ParExprContext = ParExprContext;\n\nsequenceParser.prototype.parExpr = function() {\n\n var localctx = new ParExprContext(this, this._ctx, this.state);\n this.enterRule(localctx, 98, sequenceParser.RULE_parExpr);\n try {\n this.state = 541;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,74,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 532;\n this.match(sequenceParser.OPAR);\n this.state = 533;\n this.condition();\n this.state = 534;\n this.match(sequenceParser.CPAR);\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 536;\n this.match(sequenceParser.OPAR);\n this.state = 537;\n this.condition();\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 538;\n this.match(sequenceParser.OPAR);\n this.state = 539;\n this.match(sequenceParser.CPAR);\n break;\n\n case 4:\n this.enterOuterAlt(localctx, 4);\n this.state = 540;\n this.match(sequenceParser.OPAR);\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction ConditionContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_condition;\n return this;\n}\n\nConditionContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nConditionContext.prototype.constructor = ConditionContext;\n\nConditionContext.prototype.atom = function() {\n return this.getTypedRuleContext(AtomContext,0);\n};\n\nConditionContext.prototype.expr = function() {\n return this.getTypedRuleContext(ExprContext,0);\n};\n\nConditionContext.prototype.inExpr = function() {\n return this.getTypedRuleContext(InExprContext,0);\n};\n\nConditionContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterCondition(this);\n\t}\n};\n\nConditionContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitCondition(this);\n\t}\n};\n\n\n\n\nsequenceParser.ConditionContext = ConditionContext;\n\nsequenceParser.prototype.condition = function() {\n\n var localctx = new ConditionContext(this, this._ctx, this.state);\n this.enterRule(localctx, 100, sequenceParser.RULE_condition);\n try {\n this.state = 546;\n this._errHandler.sync(this);\n var la_ = this._interp.adaptivePredict(this._input,75,this._ctx);\n switch(la_) {\n case 1:\n this.enterOuterAlt(localctx, 1);\n this.state = 543;\n this.atom();\n break;\n\n case 2:\n this.enterOuterAlt(localctx, 2);\n this.state = 544;\n this.expr(0);\n break;\n\n case 3:\n this.enterOuterAlt(localctx, 3);\n this.state = 545;\n this.inExpr();\n break;\n\n }\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nfunction InExprContext(parser, parent, invokingState) {\n\tif(parent===undefined) {\n\t parent = null;\n\t}\n\tif(invokingState===undefined || invokingState===null) {\n\t\tinvokingState = -1;\n\t}\n\tantlr4.ParserRuleContext.call(this, parent, invokingState);\n this.parser = parser;\n this.ruleIndex = sequenceParser.RULE_inExpr;\n return this;\n}\n\nInExprContext.prototype = Object.create(antlr4.ParserRuleContext.prototype);\nInExprContext.prototype.constructor = InExprContext;\n\nInExprContext.prototype.ID = function(i) {\n\tif(i===undefined) {\n\t\ti = null;\n\t}\n if(i===null) {\n return this.getTokens(sequenceParser.ID);\n } else {\n return this.getToken(sequenceParser.ID, i);\n }\n};\n\n\nInExprContext.prototype.IN = function() {\n return this.getToken(sequenceParser.IN, 0);\n};\n\nInExprContext.prototype.enterRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.enterInExpr(this);\n\t}\n};\n\nInExprContext.prototype.exitRule = function(listener) {\n if(listener instanceof sequenceParserListener ) {\n listener.exitInExpr(this);\n\t}\n};\n\n\n\n\nsequenceParser.InExprContext = InExprContext;\n\nsequenceParser.prototype.inExpr = function() {\n\n var localctx = new InExprContext(this, this._ctx, this.state);\n this.enterRule(localctx, 102, sequenceParser.RULE_inExpr);\n try {\n this.enterOuterAlt(localctx, 1);\n this.state = 548;\n this.match(sequenceParser.ID);\n this.state = 549;\n this.match(sequenceParser.IN);\n this.state = 550;\n this.match(sequenceParser.ID);\n } catch (re) {\n \tif(re instanceof antlr4.error.RecognitionException) {\n\t localctx.exception = re;\n\t this._errHandler.reportError(this, re);\n\t this._errHandler.recover(this, re);\n\t } else {\n\t \tthrow re;\n\t }\n } finally {\n this.exitRule();\n }\n return localctx;\n};\n\n\nsequenceParser.prototype.sempred = function(localctx, ruleIndex, predIndex) {\n\tswitch(ruleIndex) {\n\tcase 47:\n\t\t\treturn this.expr_sempred(localctx, predIndex);\n default:\n throw \"No predicate with index:\" + ruleIndex;\n }\n};\n\nsequenceParser.prototype.expr_sempred = function(localctx, predIndex) {\n\tswitch(predIndex) {\n\t\tcase 0:\n\t\t\treturn this.precpred(this._ctx, 12);\n\t\tcase 1:\n\t\t\treturn this.precpred(this._ctx, 11);\n\t\tcase 2:\n\t\t\treturn this.precpred(this._ctx, 10);\n\t\tcase 3:\n\t\t\treturn this.precpred(this._ctx, 9);\n\t\tcase 4:\n\t\t\treturn this.precpred(this._ctx, 8);\n\t\tcase 5:\n\t\t\treturn this.precpred(this._ctx, 7);\n\t\tcase 6:\n\t\t\treturn this.precpred(this._ctx, 6);\n\t\tdefault:\n\t\t\tthrow \"No predicate with index:\" + predIndex;\n\t}\n};\n\n\nexports.sequenceParser = sequenceParser;\n","// Generated from sequenceParser.g4 by ANTLR 4.8\n// jshint ignore: start\nvar antlr4 = require('antlr4/index');\n\n// This class defines a complete listener for a parse tree produced by sequenceParser.\nfunction sequenceParserListener() {\n\tantlr4.tree.ParseTreeListener.call(this);\n\treturn this;\n}\n\nsequenceParserListener.prototype = Object.create(antlr4.tree.ParseTreeListener.prototype);\nsequenceParserListener.prototype.constructor = sequenceParserListener;\n\n// Enter a parse tree produced by sequenceParser#prog.\nsequenceParserListener.prototype.enterProg = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#prog.\nsequenceParserListener.prototype.exitProg = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#title.\nsequenceParserListener.prototype.enterTitle = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#title.\nsequenceParserListener.prototype.exitTitle = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#head.\nsequenceParserListener.prototype.enterHead = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#head.\nsequenceParserListener.prototype.exitHead = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#group.\nsequenceParserListener.prototype.enterGroup = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#group.\nsequenceParserListener.prototype.exitGroup = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#starterExp.\nsequenceParserListener.prototype.enterStarterExp = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#starterExp.\nsequenceParserListener.prototype.exitStarterExp = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#starter.\nsequenceParserListener.prototype.enterStarter = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#starter.\nsequenceParserListener.prototype.exitStarter = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#participant.\nsequenceParserListener.prototype.enterParticipant = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#participant.\nsequenceParserListener.prototype.exitParticipant = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#stereotype.\nsequenceParserListener.prototype.enterStereotype = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#stereotype.\nsequenceParserListener.prototype.exitStereotype = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#label.\nsequenceParserListener.prototype.enterLabel = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#label.\nsequenceParserListener.prototype.exitLabel = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#participantType.\nsequenceParserListener.prototype.enterParticipantType = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#participantType.\nsequenceParserListener.prototype.exitParticipantType = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#name.\nsequenceParserListener.prototype.enterName = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#name.\nsequenceParserListener.prototype.exitName = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#width.\nsequenceParserListener.prototype.enterWidth = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#width.\nsequenceParserListener.prototype.exitWidth = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#block.\nsequenceParserListener.prototype.enterBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#block.\nsequenceParserListener.prototype.exitBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#ret.\nsequenceParserListener.prototype.enterRet = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#ret.\nsequenceParserListener.prototype.exitRet = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#divider.\nsequenceParserListener.prototype.enterDivider = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#divider.\nsequenceParserListener.prototype.exitDivider = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#stat.\nsequenceParserListener.prototype.enterStat = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#stat.\nsequenceParserListener.prototype.exitStat = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#par.\nsequenceParserListener.prototype.enterPar = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#par.\nsequenceParserListener.prototype.exitPar = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#opt.\nsequenceParserListener.prototype.enterOpt = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#opt.\nsequenceParserListener.prototype.exitOpt = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#creation.\nsequenceParserListener.prototype.enterCreation = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#creation.\nsequenceParserListener.prototype.exitCreation = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#creationBody.\nsequenceParserListener.prototype.enterCreationBody = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#creationBody.\nsequenceParserListener.prototype.exitCreationBody = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#message.\nsequenceParserListener.prototype.enterMessage = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#message.\nsequenceParserListener.prototype.exitMessage = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#messageBody.\nsequenceParserListener.prototype.enterMessageBody = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#messageBody.\nsequenceParserListener.prototype.exitMessageBody = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#func.\nsequenceParserListener.prototype.enterFunc = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#func.\nsequenceParserListener.prototype.exitFunc = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#from.\nsequenceParserListener.prototype.enterFrom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#from.\nsequenceParserListener.prototype.exitFrom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#to.\nsequenceParserListener.prototype.enterTo = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#to.\nsequenceParserListener.prototype.exitTo = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#signature.\nsequenceParserListener.prototype.enterSignature = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#signature.\nsequenceParserListener.prototype.exitSignature = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#invocation.\nsequenceParserListener.prototype.enterInvocation = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#invocation.\nsequenceParserListener.prototype.exitInvocation = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#assignment.\nsequenceParserListener.prototype.enterAssignment = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#assignment.\nsequenceParserListener.prototype.exitAssignment = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#asyncMessage.\nsequenceParserListener.prototype.enterAsyncMessage = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#asyncMessage.\nsequenceParserListener.prototype.exitAsyncMessage = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#content.\nsequenceParserListener.prototype.enterContent = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#content.\nsequenceParserListener.prototype.exitContent = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#construct.\nsequenceParserListener.prototype.enterConstruct = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#construct.\nsequenceParserListener.prototype.exitConstruct = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#type.\nsequenceParserListener.prototype.enterType = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#type.\nsequenceParserListener.prototype.exitType = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#assignee.\nsequenceParserListener.prototype.enterAssignee = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#assignee.\nsequenceParserListener.prototype.exitAssignee = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#methodName.\nsequenceParserListener.prototype.enterMethodName = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#methodName.\nsequenceParserListener.prototype.exitMethodName = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#parameters.\nsequenceParserListener.prototype.enterParameters = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#parameters.\nsequenceParserListener.prototype.exitParameters = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#parameter.\nsequenceParserListener.prototype.enterParameter = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#parameter.\nsequenceParserListener.prototype.exitParameter = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#declaration.\nsequenceParserListener.prototype.enterDeclaration = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#declaration.\nsequenceParserListener.prototype.exitDeclaration = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#tcf.\nsequenceParserListener.prototype.enterTcf = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#tcf.\nsequenceParserListener.prototype.exitTcf = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#tryBlock.\nsequenceParserListener.prototype.enterTryBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#tryBlock.\nsequenceParserListener.prototype.exitTryBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#catchBlock.\nsequenceParserListener.prototype.enterCatchBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#catchBlock.\nsequenceParserListener.prototype.exitCatchBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#finallyBlock.\nsequenceParserListener.prototype.enterFinallyBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#finallyBlock.\nsequenceParserListener.prototype.exitFinallyBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#alt.\nsequenceParserListener.prototype.enterAlt = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#alt.\nsequenceParserListener.prototype.exitAlt = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#ifBlock.\nsequenceParserListener.prototype.enterIfBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#ifBlock.\nsequenceParserListener.prototype.exitIfBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#elseIfBlock.\nsequenceParserListener.prototype.enterElseIfBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#elseIfBlock.\nsequenceParserListener.prototype.exitElseIfBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#elseBlock.\nsequenceParserListener.prototype.enterElseBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#elseBlock.\nsequenceParserListener.prototype.exitElseBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#braceBlock.\nsequenceParserListener.prototype.enterBraceBlock = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#braceBlock.\nsequenceParserListener.prototype.exitBraceBlock = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#loop.\nsequenceParserListener.prototype.enterLoop = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#loop.\nsequenceParserListener.prototype.exitLoop = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#assignmentExpr.\nsequenceParserListener.prototype.enterAssignmentExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#assignmentExpr.\nsequenceParserListener.prototype.exitAssignmentExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#funcExpr.\nsequenceParserListener.prototype.enterFuncExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#funcExpr.\nsequenceParserListener.prototype.exitFuncExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#atomExpr.\nsequenceParserListener.prototype.enterAtomExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#atomExpr.\nsequenceParserListener.prototype.exitAtomExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#orExpr.\nsequenceParserListener.prototype.enterOrExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#orExpr.\nsequenceParserListener.prototype.exitOrExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#additiveExpr.\nsequenceParserListener.prototype.enterAdditiveExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#additiveExpr.\nsequenceParserListener.prototype.exitAdditiveExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#relationalExpr.\nsequenceParserListener.prototype.enterRelationalExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#relationalExpr.\nsequenceParserListener.prototype.exitRelationalExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#plusExpr.\nsequenceParserListener.prototype.enterPlusExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#plusExpr.\nsequenceParserListener.prototype.exitPlusExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#notExpr.\nsequenceParserListener.prototype.enterNotExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#notExpr.\nsequenceParserListener.prototype.exitNotExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#unaryMinusExpr.\nsequenceParserListener.prototype.enterUnaryMinusExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#unaryMinusExpr.\nsequenceParserListener.prototype.exitUnaryMinusExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#creationExpr.\nsequenceParserListener.prototype.enterCreationExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#creationExpr.\nsequenceParserListener.prototype.exitCreationExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#parenthesizedExpr.\nsequenceParserListener.prototype.enterParenthesizedExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#parenthesizedExpr.\nsequenceParserListener.prototype.exitParenthesizedExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#multiplicationExpr.\nsequenceParserListener.prototype.enterMultiplicationExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#multiplicationExpr.\nsequenceParserListener.prototype.exitMultiplicationExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#equalityExpr.\nsequenceParserListener.prototype.enterEqualityExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#equalityExpr.\nsequenceParserListener.prototype.exitEqualityExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#andExpr.\nsequenceParserListener.prototype.enterAndExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#andExpr.\nsequenceParserListener.prototype.exitAndExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#numberAtom.\nsequenceParserListener.prototype.enterNumberAtom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#numberAtom.\nsequenceParserListener.prototype.exitNumberAtom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#booleanAtom.\nsequenceParserListener.prototype.enterBooleanAtom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#booleanAtom.\nsequenceParserListener.prototype.exitBooleanAtom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#idAtom.\nsequenceParserListener.prototype.enterIdAtom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#idAtom.\nsequenceParserListener.prototype.exitIdAtom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#stringAtom.\nsequenceParserListener.prototype.enterStringAtom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#stringAtom.\nsequenceParserListener.prototype.exitStringAtom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#nilAtom.\nsequenceParserListener.prototype.enterNilAtom = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#nilAtom.\nsequenceParserListener.prototype.exitNilAtom = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#parExpr.\nsequenceParserListener.prototype.enterParExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#parExpr.\nsequenceParserListener.prototype.exitParExpr = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#condition.\nsequenceParserListener.prototype.enterCondition = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#condition.\nsequenceParserListener.prototype.exitCondition = function(ctx) {\n};\n\n\n// Enter a parse tree produced by sequenceParser#inExpr.\nsequenceParserListener.prototype.enterInExpr = function(ctx) {\n};\n\n// Exit a parse tree produced by sequenceParser#inExpr.\nsequenceParserListener.prototype.exitInExpr = function(ctx) {\n};\n\n\n\nexports.sequenceParserListener = sequenceParserListener;","var antlr4 = require('antlr4/index')\nvar sequenceParserListener = require('../generated-parser/sequenceParserListener')\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT\n\nvar ChildFragmentDetector = function () {\n sequenceParserListener.sequenceParserListener.call(this)\n return this\n}\n\nChildFragmentDetector.prototype = Object.create(sequenceParserListener.sequenceParserListener.prototype)\nChildFragmentDetector.prototype.constructor = ChildFragmentDetector\n\nvar cursor = 0\nvar max = 0\n\nChildFragmentDetector.prototype.enterTcf = function () {\n cursor++\n}\nChildFragmentDetector.prototype.enterOpt = function () {\n cursor++\n}\nChildFragmentDetector.prototype.enterPar = function () {\n cursor++\n}\nChildFragmentDetector.prototype.enterAlt = function () {\n cursor++\n}\nChildFragmentDetector.prototype.enterLoop = function () {\n cursor++\n}\n\nChildFragmentDetector.prototype.exitTcf = function () {\n max = Math.max(max, cursor)\n cursor--\n}\nChildFragmentDetector.prototype.exitOpt = function () {\n max = Math.max(max, cursor)\n cursor--\n}\nChildFragmentDetector.prototype.exitPar = function () {\n max = Math.max(max, cursor)\n cursor--\n}\nChildFragmentDetector.prototype.exitAlt = function () {\n max = Math.max(max, cursor)\n cursor--\n}\nChildFragmentDetector.prototype.exitLoop = function () {\n max = Math.max(max, cursor)\n cursor--\n}\n\nChildFragmentDetector.prototype.depth = function (me) {\n return function (context) {\n cursor = 0\n max = 0\n context.children.map(function(child) { walker.walk(me, child) })\n return max\n }\n}\n\nmodule.exports = ChildFragmentDetector\n","const sequenceParser = require('../generated-parser/sequenceParser')\nconst seqParser = sequenceParser.sequenceParser;\n\nconst CreationContext = seqParser.CreationContext;\nCreationContext.prototype.Body = CreationContext.prototype.creationBody;\nCreationContext.prototype.isCurrent = function (cursor) {\n return isCurrent.bind(this)(cursor);\n}\n\nconst MessageContext = seqParser.MessageContext\nMessageContext.prototype.Body = MessageContext.prototype.messageBody;\nMessageContext.prototype.isCurrent = function (cursor) {\n return isCurrent.bind(this)(cursor);\n}\n\nfunction isCurrent(cursor) {\n try {\n if (cursor === null || cursor === undefined) return false;\n const start = this.start.start;\n const stop = this.Body().stop.stop + 1;\n\n return cursor >= start && cursor <= stop;\n } catch (e) {\n return false;\n }\n}\n","// Owner is the `to` for a message or the name in the creation.\nconst sequenceParser = require('../generated-parser/sequenceParser')\n\nconst seqParser = sequenceParser.sequenceParser;\nconst CreationContext = seqParser.CreationContext;\nconst MessageContext = seqParser.MessageContext\nconst AsyncMessageContext = seqParser.AsyncMessageContext\nCreationContext.prototype.Assignee = function () {\n return this.creationBody()?.assignment()?.assignee()?.getText();\n}\n\nCreationContext.prototype.Owner = function () {\n const assignee = this.Assignee();\n const type = this.creationBody()?.construct()?.getText();\n if (!type) {\n return 'Missing Constructor'\n }\n return assignee ? `${assignee}:${type}`: type;\n}\n\nMessageContext.prototype.Owner = function () {\n // Note: It may still be a self message if it has a `to` and `to === from`.\n const isImpliedSelf = !this.messageBody()?.to();\n if (isImpliedSelf) {\n return this.ClosestAncestorStat().Origin();\n }\n return this.messageBody().to().getFormattedText();\n}\n\nAsyncMessageContext.prototype.Owner = function () {\n return this.to()?.getFormattedText() || this.ClosestAncestorStat().Origin();\n}\n","const sequenceParser = require('../generated-parser/sequenceParser');\nconst seqParser = sequenceParser.sequenceParser;\nconst ProgContext = seqParser.ProgContext;\n\nProgContext.prototype.Starter = function () {\n const declaredStarter = this.head()?.starterExp()?.starter()?.getFormattedText()\n let starterFromStartingMessage;\n let starterFromParticipant;\n let starterFromParticipantGroup;\n const stat = this.block()?.stat();\n if (stat && stat[0]) {\n const messageFrom = stat[0].message()?.messageBody()?.from()?.getFormattedText()\n const asyncMessageFrom = stat[0].asyncMessage()?.from()?.getFormattedText()\n starterFromStartingMessage = messageFrom || asyncMessageFrom\n } else {\n\n const children = this.head()?.children;\n if(children && children[0]) {\n const child = children[0];\n if (child instanceof sequenceParser.sequenceParser.ParticipantContext) {\n starterFromParticipant = child.name()?.getFormattedText();\n }\n if (child instanceof sequenceParser.sequenceParser.GroupContext) {\n const participants = child.participant();\n if(participants && participants[0]) {\n starterFromParticipantGroup = participants[0].name()?.getFormattedText();\n }\n }\n }\n }\n\n return declaredStarter ||\n starterFromStartingMessage ||\n starterFromParticipant ||\n starterFromParticipantGroup ||\n '_STARTER_'\n}\n","const sequenceParser = require('../generated-parser/sequenceParser');\n\nconst seqParser = sequenceParser.sequenceParser;\nconst RetContext = seqParser.RetContext;\nconst ProgContext = seqParser.ProgContext;\nconst MessageContext = seqParser.MessageContext;\nconst CreationContext = seqParser.CreationContext;\n\nRetContext.prototype.ReturnTo = function() {\n const stat = this.parentCtx;\n const block = stat.parentCtx;\n const blockParent = block.parentCtx;\n if(blockParent instanceof ProgContext) {\n return blockParent.Starter();\n } else {\n let ctx = blockParent;\n while (ctx && !(ctx instanceof MessageContext) && !(ctx instanceof CreationContext)) {\n if(ctx instanceof ProgContext) {\n return ctx.Starter();\n }\n ctx = ctx.parentCtx;\n }\n if(ctx instanceof MessageContext) {\n return ctx.messageBody()?.from()?.getFormattedText() || ctx.ClosestAncestorStat().Origin();\n }\n return ctx.ClosestAncestorStat().Origin();\n }\n}\n","const sequenceParser = require('../generated-parser/sequenceParser');\n\nconst seqParser = sequenceParser.sequenceParser;\nconst StatContext = seqParser.StatContext;\nconst ProgContext = seqParser.ProgContext;\nconst BraceBlockContext = seqParser.BraceBlockContext;\n\nStatContext.prototype.Origin = function() {\n const block = this.parentCtx;\n const blockParent = block.parentCtx;\n if(blockParent instanceof ProgContext) {\n return blockParent.Starter();\n } else if (blockParent instanceof BraceBlockContext) {\n let ctx = blockParent.parentCtx;\n while (ctx && !(ctx instanceof StatContext)) {\n if (ctx instanceof seqParser.MessageContext) {\n return ctx.Owner();\n }\n if (ctx instanceof seqParser.CreationContext) {\n return ctx.Owner();\n }\n ctx = ctx.parentCtx;\n }\n return ctx.Origin();\n }\n}\n","const sequenceParser = require('../generated-parser/sequenceParser');\n\nconst seqParser = sequenceParser.sequenceParser;\nconst TitleContext = seqParser.TitleContext;\n\nTitleContext.prototype.content = function() {\n if(this.children.length < 2) {\n return 'Untiled'\n } else {\n return this.children[1].getText().trim()\n }\n}\n","import {Participants} from './Participants'\n\nconst antlr4 = require('antlr4/index');\nconst sequenceParserListener = require('../generated-parser/sequenceParserListener');\nconst sequenceParser = require('../generated-parser/sequenceParser')\nconst seqParser = sequenceParser.sequenceParser;\nconst ProgContext = seqParser.ProgContext;\n\nlet participants = undefined;\nlet isBlind = false;\nlet groupId = undefined;\nconst ToCollector = function () {\n sequenceParserListener.sequenceParserListener.call(this)\n return this\n};\n\nToCollector.prototype = Object.create(sequenceParserListener.sequenceParserListener.prototype)\n// Rules:\n// 1. Later declaration win\n// 2. Participant declaration overwrite cannot be overwritten by To or Starter\nlet onParticipant = function (ctx) {\n // if(!(ctx?.name())) return;\n if (isBlind) return;\n const type = ctx?.participantType()?.getFormattedText().replace('@', '');\n const participant = ctx?.name()?.getFormattedText() || 'Missing `Participant`';\n const stereotype = ctx.stereotype()?.name()?.getFormattedText();\n const width = (ctx.width && ctx.width()) && Number.parseInt(ctx.width().getText()) || undefined;\n const label = ctx.label && ctx.label()?.name()?.getFormattedText();\n const explicit = true;\n const color = ctx.COLOR()?.getText();\n participants.Add(participant, false, stereotype, width, groupId, label, explicit, type, color);\n};\nToCollector.prototype.enterParticipant = onParticipant\n\nlet onTo = function (ctx) {\n if (isBlind) return;\n let participant = ctx.getFormattedText();\n participants.Add(participant);\n};\n\n\nToCollector.prototype.enterFrom = onTo\nToCollector.prototype.enterTo = onTo\n\nToCollector.prototype.enterStarter = function(ctx) {\n let participant = ctx.getFormattedText();\n participants.Add(participant, true)\n}\n\nToCollector.prototype.enterCreation = function (ctx) {\n if (isBlind) return;\n const participant = ctx.Owner();\n participants.Add(participant);\n}\n\nToCollector.prototype.enterParameters = function () {\n isBlind = true;\n}\n\nToCollector.prototype.exitParameters = function () {\n isBlind = false;\n}\n\nToCollector.prototype.enterCondition = function () {\n isBlind = true;\n}\n\nToCollector.prototype.exitCondition = function () {\n isBlind = false;\n}\n\nToCollector.prototype.enterGroup = function (ctx) {\n // group { A } => groupId = undefined\n // group group1 { A } => groupId = \"group1\"\n groupId = ctx.name()?.getFormattedText();\n}\n\nToCollector.prototype.exitGroup = function () {\n groupId = undefined;\n}\n\nToCollector.prototype.enterRet = function (ctx) {\n if (ctx.asyncMessage()) {\n return;\n }\n participants.Add(ctx.From())\n participants.Add(ctx.ReturnTo())\n}\n\nconst walker = antlr4.tree.ParseTreeWalker.DEFAULT\n\nToCollector.prototype.getParticipants = function (context, withStarter) {\n participants = new Participants();\n if(withStarter && context instanceof ProgContext) {\n participants.Add(context.Starter(), true)\n }\n walker.walk(this, context)\n return participants;\n}\n\nmodule.exports = ToCollector;\n","const antlr4 = require('antlr4/index');\nconst sequenceLexer = require('../generated-parser/sequenceLexer');\nconst sequenceParser = require('../generated-parser/sequenceParser');\nconst ToCollector = require('./ToCollector');\nconst ChildFragmentDetector = require('./ChildFragmentDetecotr');\nrequire('./TitleContext');\nrequire('./IsCurrent');\nrequire('./Owner');\nrequire('./ProgContext');\nrequire('./RetContext');\nrequire('./StatContext');\nrequire('./SignatureText')\nrequire('./From')\nrequire('./key/Key')\nrequire('./utils/cloest-ancestor/ClosestAncestor')\nconst formatText = require(\"@/utils/StringUtil\").formatText\n\nconst errors = [];\nclass SeqErrorListener extends antlr4.error.ErrorListener {\n syntaxError(recognizer, offendingSymbol, line, column, msg) {\n errors.push(`${offendingSymbol} line ${line}, col ${column}: ${msg}`);\n }\n}\n\nfunction rootContext(code) {\n const chars = new antlr4.InputStream(code);\n const lexer = new sequenceLexer.sequenceLexer(chars);\n const tokens = new antlr4.CommonTokenStream(lexer);\n const parser = new sequenceParser.sequenceParser(tokens);\n parser.addErrorListener(new SeqErrorListener());\n return parser._syntaxErrors ? null : parser.prog();\n}\n\nantlr4.ParserRuleContext.prototype.getFormattedText = function() {\n const code = this.parser.getTokenStream().getText(this.getSourceInterval());\n // remove extra quotes, spaces and new lines\n return formatText(code);\n};\n\nantlr4.ParserRuleContext.prototype.getComment = function() {\n let tokenIndex = this.start.tokenIndex;\n let channel = sequenceLexer.sequenceLexer.prototype.channelNames.indexOf('COMMENT_CHANNEL');\n if (this.constructor.name === 'BraceBlockContext') {\n tokenIndex = this.stop.tokenIndex\n }\n let hiddenTokensToLeft = this.parser\n .getTokenStream()\n .getHiddenTokensToLeft(tokenIndex, channel);\n return hiddenTokensToLeft && hiddenTokensToLeft\n .map(t => t.text.substring(2)) // skip '//'\n .join('');\n};\n\nantlr4.ParserRuleContext.prototype.returnedValue = function() {\n return this.braceBlock().block().ret().value()\n}\n\nmodule.exports = {\n RootContext: rootContext,\n ProgContext: sequenceParser.sequenceParser.ProgContext,\n GroupContext: sequenceParser.sequenceParser.GroupContext,\n ParticipantContext: sequenceParser.sequenceParser.ParticipantContext,\n Participants: function(ctx, withStarter) {\n const toCollector = new ToCollector();\n return toCollector.getParticipants(ctx, withStarter)\n },\n Errors: errors,\n /**\n * @return {number} how many levels of embedded fragments\n */\n Depth: function(ctx) {\n const childFragmentDetector = new ChildFragmentDetector();\n return childFragmentDetector.depth(childFragmentDetector)(ctx)\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","module.exports = __WEBPACK_EXTERNAL_MODULE__7203__;","/* (ignored) */","'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace']\n\n if (typeof proto === 'function') {\n proto.error = proto.fatal = proto.warn =\n proto.info = proto.debug = proto.trace = proto\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = pino.levels\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return this.level === 'silent'\n ? Infinity\n : this.levels.values[this.level]\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(setOpts, logger, 'error', 'log') // <-- must stay first\n set(setOpts, logger, 'fatal', 'error')\n set(setOpts, logger, 'warn', 'error')\n set(setOpts, logger, 'info', 'log')\n set(setOpts, logger, 'debug', 'log')\n set(setOpts, logger, 'trace', 'log')\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n this.error = bind(parent, bindings, 'error')\n this.fatal = bind(parent, bindings, 'fatal')\n this.warn = bind(parent, bindings, 'warn')\n this.info = bind(parent, bindings, 'info')\n this.debug = bind(parent, bindings, 'debug')\n this.trace = bind(parent, bindings, 'trace')\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n return new Child(this)\n }\n return logger\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction set (opts, logger, level, fallback) {\n const proto = Object.getPrototypeOf(logger)\n logger[level] = logger.levelVal > logger.levels.values[level]\n ? noop\n : (proto[level] ? proto[level] : (_console[level] || _console[fallback] || noop))\n\n wrap(opts, logger, level)\n}\n\nfunction wrap (opts, logger, level) {\n if (!opts.transmit && logger[level] === noop) return\n\n logger[level] = (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject) write.call(proto, asObject(this, level, args, ts))\n else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || logger.level\n const transmitValue = pino.levels.values[transmitLevel]\n const methodValue = pino.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: pino.levels.values[opts.transmit.level || logger.level],\n send: opts.transmit.send,\n val: logger.levelVal\n }, args)\n }\n }\n })(logger[level])\n}\n\nfunction asObject (logger, level, args, ts) {\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const o = {}\n if (ts) {\n o.time = ts\n }\n o.level = pino.levels.values[level]\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(o, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) o.msg = msg\n return o\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction bind (parent, bindings, level) {\n return function () {\n const args = new Array(1 + arguments.length)\n args[0] = bindings\n for (var i = 1; i < args.length; i++) {\n args[i] = arguments[i - 1]\n }\n return parent[level].apply(this, args)\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["logger","parentLogger","child","component","Vue","use","Vuex","ZenUml","constructor","el","store","app","Store","render","h","DiagramFrame","code","theme","debug","_code","_theme","state","$nextTick","Promise","resolve","level","browser","asObject","serialize","CodeRange","startLine","startCol","endLine","endCol","start","line","col","stop","from","context","column","text","length","sequenceParser","require","seqParser","CreationContext","StatContext","MessageContext","AsyncMessageContext","RetContext","prototype","From","parentCtx","ClosestAncestorStat","Origin","undefined","ProvidedFrom","messageBody","getFormattedText","ParticipantType","Participant","name","isStarter","stereotype","width","groupId","label","explicit","type","color","Type","toLowerCase","Actor","Boundary","Collection","Control","Database","Entity","Queue","EC2","ECS","IAM","Lambda","RDS","S3","Undefined","Participants","Map","Add","participant","participants","set","Get","a","b","ImplicitArray","Array","filter","p","entries","map","entry","Names","keys","First","values","next","value","get","Size","size","Starter","first","SignatureText","func","signature","s","join","content","params","creationBody","parameters","parameter","antlr4","ParserRuleContext","Key","current","ClosestAncestorBlock","BlockContext","console","warn","MINI_GAP","MARGIN","ARROW_HEAD_WIDTH","MIN_PARTICIPANT_WIDTH","TextType","Coordinates","ctx","widthProvider","participantModels","ownableMessages","walkThrough","getPosition","participantName","pIndex","findIndex","Error","getParticipantGap","m","withParticipantGaps","withMessageGaps","forEach","message","indexFrom","indexTo","to","leftIndex","Math","min","rightIndex","max","messageWidth","getMessageWidth","e","halfSelf","half","MessageContent","OwnableMessageType","CreationMessage","_","i","v","j","leftNameOrLabel","labelOrName","left","halfLeft","leftIsVisible","selfIsVisible","halfLeftParticipantWidth","halfWithMargin","_getParticipantWidth","ParticipantName","getWidth","lastParticipant","calculatedWidth","sequenceParserListener","MessageContextListener","_addOwnedMessage","SyncMessage","AsyncMessage","isBlind","owner","Owner","push","enterParameters","exitParameters","result","AllMessages","walker","tree","ParseTreeWalker","DEFAULT","listener","walk","OrderedParticipants","rootContext","ParticipantListener","seqDsl","enterCondition","exitCondition","enterStarter","starter","enterParticipant","explicitParticipants","enterFrom","ProgContext","children","enterTo","some","implicitParticipants","enterCreation","_isStarterExplicitlyPositioned","unshift","_getStarter","_dedup","_assignLeft","find","array","index","p1","reduce","pre","curr","WidthProviderOnBrowser","hiddenDiv","document","querySelector","newDiv","createElement","className","style","fontSize","fontFamily","display","whiteSpace","visibility","position","top","overflow","paddingLeft","paddingRight","margin","border","body","appendChild","innerHTML","scrollWidth","Dual","velocity","dualPlus","x","y","epsilon","sqrt","Number","EPSILON","dualLessThan","d","abs","DeltaTracker","delta","Infinity","lessThan","graphFromMatrix","n","matrix","graph","longestPathTable","gaps","tracker","maximum","table","argument","edge","freezeCriticalGaps","advanceGaps","positionsFromTable","positions","find_optimal","storeInitiationTime","setTimeout","debounceTime","warning","scale","selected","cursor","showTips","onElementClick","codeRange","log","getters","title","coordinates","centerOf","entity","error","GroupContext","ParticipantContext","distance","distance2","mutations","payload","setScale","onSelect","includes","actions","updateCode","commit","strict","brightnessIgnoreAlpha","c","colorString","rgb","r","g","removeAlpha","removeChangeLines","removeExtraSpaces","removeSpaceBeforeAndAfterPunctuation","removeTrailingSpace","removeLeadingAndEndingQuotes","formatText","props","computed","statements","components","Statement","highlightjs","codespan","marked","highlight","renderer","markedComment","data","commitHash","gitBranch","methods","showTipsDialog","toPng","backgroundColor","toSvg","toBlob","toJpeg","zoomIn","zoomOut","setTheme","setStyle","styleElement","setRemoteCss","fetch","then","remoteCssElement","Debug","WidthProvider","TipsDialog","DiagramTitle","SeqDiagram","Privacy","centerOfFrom","mixins","alt","blockInIfBlock","condition","elseBlock","conditionFromIfElseBlock","blockInElseIfBlock","beforeCreate","loop","blockInLoop","opt","par","tcf","blockInTryBlock","finallyBlock","exception","blockInCatchBlock","asyncMessage","interactionWidth","translateX","rightToLeft","source","target","isCurrent","isSelf","invocation","onClick","Comment","SelfInvocationAsync","Message","isAsync","borderStyle","fill","Point","right","totalWidth","participantNames","Block","center","computedCenter","LifeLineLayer","MessageLayer","depth","comment","subStatement","creation","divider","ret","Creation","Interaction","InteractionAsync","FragmentAlt","FragmentPar","FragmentOpt","FragmentTryCatchFinally","FragmentLoop","Divider","Return","assignee","mounted","updated","layoutMessageContainer","_layoutMessageContainer","Occurrence","providedFrom","outOfBand","showStarter","isRootBlock","origin","passOnOffset","SelfInvocation","setTop","offset","entities","LifeLine","invisibleStarter","starterParticipant","starterOnTheLeft","explicitGroupAndParticipants","getParticipantEntity","LifeLineGroup","actor","boundary","control","database","cloudwatch","cloudfront","cognito","dynamodb","ebs","ec2","ecs","efs","elasticache","elasticbeantalk","elasticfilesystem","glacier","iam","kinesis","lambda","lightsail","rds","redshift","s3","sns","sqs","sagemaker","vpc","azureactivedirectory","azurebackup","azurecdn","azuredatafactory","azuredevops","azurefunction","azuresql","cosmosdb","logicapps","virtualmachine","bigtable","bigquery","cloudcdn","clouddns","cloudinterconnect","cloudloadbalancing","cloudsql","cloudstorage","datalab","dataproc","googleiam","googlesecurity","googlevpc","pubsub","securityscanner","stackdriver","visionapi","required","icon","updateFontColor","iconPath","IconList","standardTypes","awsServices","azureServices","googleServices","closeTipsDialog","FRAGMENT_LEFT_BASE_OFFSET","FRAGMENT_RIGHT_BASE_OFFSET","mapGetters","localParticipants","leftParticipant","allParticipants","rightParticipant","reverse","Depth","offsetX","extra","fragmentStyle","transform","serializedATN","atn","ATNDeserializer","deserialize","decisionsToDFA","decisionToState","ds","dfa","DFA","sequenceLexer","input","Lexer","call","_interp","LexerATNSimulator","PredictionContextCache","Object","create","defineProperty","EOF","Token","TITLE","COL","SOPEN","SCLOSE","ARROW","COLOR","OR","AND","EQ","NEQ","GT","LT","GTEQ","LTEQ","PLUS","MINUS","MULT","DIV","MOD","POW","NOT","SCOL","COMMA","ASSIGN","OPAR","CPAR","OBRACE","CBRACE","TRUE","FALSE","NIL","IF","ELSE","WHILE","RETURN","NEW","PAR","GROUP","OPT","AS","TRY","CATCH","FINALLY","IN","STARTER_LXR","ANNOTATION_RET","ANNOTATION","DOT","ID","INT","FLOAT","STRING","CR","SPACE","COMMENT","OTHER","EVENT_PAYLOAD_LXR","EVENT_END","WS","TITLE_CONTENT","TITLE_END","COMMENT_CHANNEL","EVENT","TITLE_MODE","channelNames","modeNames","literalNames","symbolicNames","ruleNames","grammarFileName","exports","sharedContextCache","Parser","ParserATNSimulator","RULE_prog","RULE_title","RULE_head","RULE_group","RULE_starterExp","RULE_starter","RULE_participant","RULE_stereotype","RULE_label","RULE_participantType","RULE_name","RULE_width","RULE_block","RULE_ret","RULE_divider","RULE_stat","RULE_par","RULE_opt","RULE_creation","RULE_creationBody","RULE_message","RULE_messageBody","RULE_func","RULE_from","RULE_to","RULE_signature","RULE_invocation","RULE_assignment","RULE_asyncMessage","RULE_content","RULE_construct","RULE_type","RULE_assignee","RULE_methodName","RULE_parameters","RULE_parameter","RULE_declaration","RULE_tcf","RULE_tryBlock","RULE_catchBlock","RULE_finallyBlock","RULE_alt","RULE_ifBlock","RULE_elseIfBlock","RULE_elseBlock","RULE_braceBlock","RULE_loop","RULE_expr","RULE_atom","RULE_parExpr","RULE_condition","RULE_inExpr","parser","parent","invokingState","ruleIndex","getToken","getTypedRuleContext","TitleContext","head","HeadContext","block","enterRule","enterProg","exitRule","exitProg","prog","localctx","_ctx","_la","_errHandler","sync","la_","adaptivePredict","_input","enterOuterAlt","LA","match","re","RecognitionException","reportError","recover","enterTitle","exitTitle","group","getTypedRuleContexts","starterExp","StarterExpContext","enterHead","exitHead","_alt","NoViableAltException","ATN","INVALID_ALT_NUMBER","NameContext","enterGroup","exitGroup","StarterContext","enterStarterExp","exitStarterExp","exitStarter","recoverInline","reportMatch","consume","participantType","ParticipantTypeContext","StereotypeContext","WidthContext","LabelContext","exitParticipant","enterStereotype","exitStereotype","enterLabel","exitLabel","enterParticipantType","exitParticipantType","enterName","exitName","enterWidth","exitWidth","stat","enterBlock","exitBlock","expr","ExprContext","enterRet","exitRet","DividerContext","getTokens","enterDivider","exitDivider","_OTHER","AltContext","ParContext","OptContext","LoopContext","TcfContext","enterStat","exitStat","braceBlock","BraceBlockContext","enterPar","exitPar","enterOpt","exitOpt","CreationBodyContext","exitCreation","construct","ConstructContext","assignment","AssignmentContext","ParametersContext","enterCreationBody","exitCreationBody","MessageBodyContext","enterMessage","exitMessage","FuncContext","ToContext","FromContext","enterMessageBody","exitMessageBody","SignatureContext","enterFunc","exitFunc","exitFrom","exitTo","methodName","MethodNameContext","InvocationContext","enterSignature","exitSignature","enterInvocation","exitInvocation","AssigneeContext","TypeContext","enterAssignment","exitAssignment","ContentContext","enterAsyncMessage","exitAsyncMessage","enterContent","exitContent","enterConstruct","exitConstruct","enterType","exitType","atom","AtomContext","enterAssignee","exitAssignee","enterMethodName","exitMethodName","ParameterContext","declaration","DeclarationContext","enterParameter","exitParameter","enterDeclaration","exitDeclaration","tryBlock","TryBlockContext","catchBlock","CatchBlockContext","FinallyBlockContext","enterTcf","exitTcf","enterTryBlock","exitTryBlock","enterCatchBlock","exitCatchBlock","enterFinallyBlock","exitFinallyBlock","ifBlock","IfBlockContext","elseIfBlock","ElseIfBlockContext","ElseBlockContext","enterAlt","exitAlt","parExpr","ParExprContext","enterIfBlock","exitIfBlock","enterElseIfBlock","exitElseIfBlock","enterElseBlock","exitElseBlock","enterBraceBlock","exitBraceBlock","enterLoop","exitLoop","copyFrom","AssignmentExprContext","enterAssignmentExpr","exitAssignmentExpr","FuncExprContext","enterFuncExpr","exitFuncExpr","AtomExprContext","enterAtomExpr","exitAtomExpr","OrExprContext","enterOrExpr","exitOrExpr","AdditiveExprContext","op","enterAdditiveExpr","exitAdditiveExpr","RelationalExprContext","enterRelationalExpr","exitRelationalExpr","PlusExprContext","enterPlusExpr","exitPlusExpr","NotExprContext","enterNotExpr","exitNotExpr","UnaryMinusExprContext","enterUnaryMinusExpr","exitUnaryMinusExpr","CreationExprContext","enterCreationExpr","exitCreationExpr","ParenthesizedExprContext","enterParenthesizedExpr","exitParenthesizedExpr","MultiplicationExprContext","enterMultiplicationExpr","exitMultiplicationExpr","EqualityExprContext","enterEqualityExpr","exitEqualityExpr","AndExprContext","enterAndExpr","exitAndExpr","_p","_parentctx","_parentState","_prevctx","_startState","enterRecursionRule","_parseListeners","triggerExitRuleEvent","pushNewRecursionContext","precpred","FailedPredicateException","unrollRecursionContexts","BooleanAtomContext","enterBooleanAtom","exitBooleanAtom","IdAtomContext","enterIdAtom","exitIdAtom","StringAtomContext","enterStringAtom","exitStringAtom","NilAtomContext","enterNilAtom","exitNilAtom","NumberAtomContext","enterNumberAtom","exitNumberAtom","ConditionContext","enterParExpr","exitParExpr","inExpr","InExprContext","enterInExpr","exitInExpr","sempred","predIndex","expr_sempred","ParseTreeListener","ChildFragmentDetector","me","module","Body","bind","Assignee","getText","isImpliedSelf","declaredStarter","starterFromStartingMessage","starterFromParticipant","starterFromParticipantGroup","messageFrom","asyncMessageFrom","ReturnTo","blockParent","trim","ToCollector","onParticipant","replace","parseInt","onTo","getParticipants","withStarter","errors","SeqErrorListener","ErrorListener","syntaxError","recognizer","offendingSymbol","msg","chars","InputStream","lexer","tokens","CommonTokenStream","addErrorListener","_syntaxErrors","getTokenStream","getSourceInterval","getComment","tokenIndex","channel","indexOf","hiddenTokensToLeft","getHiddenTokensToLeft","t","substring","returnedValue","RootContext","toCollector","Errors","childFragmentDetector"],"sourceRoot":""}
|