@witnet/sdk 1.0.0-beta.5 → 1.0.3

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.
Files changed (66) hide show
  1. package/dist/package.json +3 -1
  2. package/dist/src/bin/helpers.d.ts +1 -0
  3. package/dist/src/bin/helpers.d.ts.map +1 -1
  4. package/dist/src/bin/helpers.js +12 -2
  5. package/dist/src/lib/crypto/interfaces.d.ts +7 -0
  6. package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
  7. package/dist/src/lib/crypto/interfaces.js +1 -1
  8. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
  9. package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
  10. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
  11. package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
  12. package/dist/src/lib/crypto/payloads.js +1 -12
  13. package/dist/src/lib/crypto/signer.d.ts +8 -1
  14. package/dist/src/lib/crypto/signer.d.ts.map +1 -1
  15. package/dist/src/lib/crypto/signer.js +23 -2
  16. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
  17. package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
  18. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
  19. package/dist/src/lib/crypto/types.d.ts +2 -2
  20. package/dist/src/lib/crypto/types.d.ts.map +1 -1
  21. package/dist/src/lib/crypto/types.js +4 -5
  22. package/dist/src/lib/crypto/utils.d.ts +2 -1
  23. package/dist/src/lib/crypto/utils.d.ts.map +1 -1
  24. package/dist/src/lib/crypto/utils.js +6 -1
  25. package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
  26. package/dist/src/lib/crypto/wallet.js +1 -4
  27. package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
  28. package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
  29. package/dist/src/lib/radon/ccdr/wit.js +17 -2
  30. package/dist/src/lib/radon/index.d.ts +1 -1
  31. package/dist/src/lib/radon/index.d.ts.map +1 -1
  32. package/dist/src/lib/radon/index.js +9 -3
  33. package/dist/src/lib/rpc/provider.d.ts +5 -3
  34. package/dist/src/lib/rpc/provider.d.ts.map +1 -1
  35. package/dist/src/lib/rpc/provider.js +14 -3
  36. package/dist/src/lib/rpc/reporter.d.ts +2 -3
  37. package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
  38. package/dist/src/lib/rpc/reporter.js +1 -4
  39. package/dist/src/lib/rpc/types.d.ts +49 -24
  40. package/dist/src/lib/rpc/types.d.ts.map +1 -1
  41. package/dist/src/lib/rpc/types.js +3 -1
  42. package/dist/src/lib/types.d.ts +1 -1
  43. package/dist/src/lib/types.d.ts.map +1 -1
  44. package/dist/src/lib/types.js +1 -1
  45. package/dist/src/lib/utils.d.ts +3 -2
  46. package/dist/src/lib/utils.d.ts.map +1 -1
  47. package/dist/src/lib/utils.js +16 -9
  48. package/dist/witnet/assets/index.d.ts +6 -6
  49. package/dist/witnet/assets/modals/index.d.ts +10 -11
  50. package/dist/witnet/assets/modals/index.js +2 -12
  51. package/dist/witnet/assets/modals/web3/ipfs.d.ts +5 -0
  52. package/dist/witnet/assets/modals/web3/ipfs.d.ts.map +1 -0
  53. package/dist/witnet/assets/modals/web3/ipfs.js +16 -0
  54. package/dist/witnet/assets/modals/web3/wit.d.ts +1 -1
  55. package/dist/witnet/assets/modals/web3/wit.js +6 -9
  56. package/dist/witnet/assets/requests.js +1 -1
  57. package/package.json +3 -1
  58. package/src/bin/cli/inspect.js +49 -3
  59. package/src/bin/cli/network.js +9 -7
  60. package/src/bin/cli/radon.js +3 -3
  61. package/src/bin/cli/wallet.js +164 -47
  62. package/src/bin/helpers.js +13 -2
  63. package/witnet/assets/modals/index.js +1 -17
  64. package/witnet/assets/modals/web3/ipfs.js +19 -0
  65. package/witnet/assets/modals/web3/wit.js +4 -6
  66. package/witnet/assets/requests.js +1 -0
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/sdk",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.3",
4
4
  "description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
5
5
  "author": "Witnet Foundation",
6
6
  "license": "MIT",
@@ -47,6 +47,8 @@
47
47
  "bip32": "^4.0.0",
48
48
  "cbor": "^10.0.3",
49
49
  "dotenv": "^16.4.1",
50
+ "ethers": "^5.7.0",
51
+ "keccak256": "^1.0.6",
50
52
  "graphql-query-compress": "1.2.4",
51
53
  "inquirer": "^12.4.2",
52
54
  "json-bigint": "^1.0.0",
@@ -43,6 +43,7 @@ export function showUsageSubcommand(cmd: any, subcmd: any, module: any): void;
43
43
  export function showVersion(): void;
44
44
  export function toolkitRun(settings: any, args: any): Promise<any>;
45
45
  export function toUpperCamelCase(str: any): any;
46
+ export function toUtf16Bytes(str: any): Uint8Array<ArrayBuffer>;
46
47
  export function toUtf8Array(str: any): any[];
47
48
  export function utf8ArrayToStr(array: any): string;
48
49
  export function prompt(question: any): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AA0CA,yCAAuD;AACvD,yCAAmD;AACnD,0CAAoD;AAgBpD,wCAA6C;AAf7C,wCAAkD;AAClD,2CAAqD;AAerD,wCAA6C;AAC7C,wCAA6C;AAC7C,yCAA8C;AAC9C,2CAAkD;AAElD,uCAA4C;AAC5C,yCAAgD;AAChD,0CAA+C;AAH/C,0CAA+C;AAjB/C,yCAAgD;AAChD,yCAAgD;AAChD,0CAAiD;AACjD,4CAAmD;AACnD,2CAAkD;AAClD,yCAA8C;AAC9C,yCAA8C;AAC9C,0CAA+C;AAC/C,4CAAmD;AACnD,wCAA6C;AAC7C,2CAAgD;AApDhD,0CAEC;AAED,4CAMC;AAWD,6DAaC;AAtBD,kDAOC;AA6CD,mDAKC;AAoBD,gFAiBC;AAnCD,iDAEC;AAmCD,8DAsBC;AAED,uEAGC;AAgDD,+CAQC;AAjBD,gEAOC;AAYD,qEAMC;AAED,6CAYC;AA5ED,yDAmCC;AA2CD,uDAMC;AAaD,iGAUC;AAsFD,8EAKC;AAED,oCAEC;AAqED,mEAaC;AAED,gDAIC;AAED,6CA0BC;AAED,mDA2BC;AAED,oDAWC;AAED,qDAgBC;AAED,uDAoBC;AAED,gGAIC;AAED,6DA8DC;AAuGD,+EA6CC;AAlGD,mEAiBC;AAvBD,iEAIC;AAqBD,4DAgCC;AAlWD,wDAgBC;AAED,8CAEC;AAjCD,8DAWC;AAwBD,2DAcC;AAED,4FAcC;AAmND,0DAcC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AA0CA,yCAAuD;AACvD,yCAAmD;AACnD,0CAAoD;AAgBpD,wCAA6C;AAf7C,wCAAkD;AAClD,2CAAqD;AAerD,wCAA6C;AAC7C,wCAA6C;AAC7C,yCAA8C;AAC9C,2CAAkD;AAElD,uCAA4C;AAC5C,yCAAgD;AAChD,0CAA+C;AAH/C,0CAA+C;AAjB/C,yCAAgD;AAChD,yCAAgD;AAChD,0CAAiD;AACjD,4CAAmD;AACnD,2CAAkD;AAClD,yCAA8C;AAC9C,yCAA8C;AAC9C,0CAA+C;AAC/C,4CAAmD;AACnD,wCAA6C;AAC7C,2CAAgD;AApDhD,0CAEC;AAED,4CAMC;AAWD,6DAaC;AAtBD,kDAOC;AA6CD,mDAKC;AAoBD,gFAiBC;AAnCD,iDAEC;AAmCD,8DAsBC;AAED,uEAGC;AAgDD,+CAQC;AAjBD,gEAOC;AAYD,qEAMC;AAED,6CAYC;AA5ED,yDAmCC;AA2CD,uDAMC;AAaD,iGAUC;AAsFD,8EAKC;AAED,oCAEC;AAqED,mEAaC;AAED,gDAIC;AAED,gEAQC;AAED,6CA0BC;AAED,mDA2BC;AAED,oDAWC;AAED,qDAgBC;AAED,uDAoBC;AAED,gGAIC;AAED,6DA8DC;AAuGD,+EA6CC;AAlGD,mEAiBC;AAvBD,iEAIC;AAqBD,4DAgCC;AA5WD,wDAgBC;AAED,8CAEC;AAjCD,8DAWC;AAwBD,2DAcC;AAED,4FAcC;AA6ND,0DAcC"}
@@ -334,7 +334,7 @@ function showVersion() {
334
334
  }
335
335
  function getWildcardsCountFromString(str) {
336
336
  let maxArgsIndex = 0;
337
- if (str) {
337
+ if (str && typeof str === 'string') {
338
338
  let match;
339
339
  const regexp = /\\\d\\/g;
340
340
  while ((match = regexp.exec(str)) !== null) {
@@ -419,6 +419,15 @@ function toUpperCamelCase(str) {
419
419
  return capture.toUpperCase();
420
420
  }).replace(/\s+/g, "");
421
421
  }
422
+ function toUtf16Bytes(str) {
423
+ const bytes = new Uint8Array(str.length * 2);
424
+ for (let i = 0; i < str.length; i++) {
425
+ const code = str.charCodeAt(i);
426
+ bytes[i * 2] = code >> 8;
427
+ bytes[i * 2 + 1] = code & 0xff;
428
+ }
429
+ return bytes;
430
+ }
422
431
  function toUtf8Array(str) {
423
432
  const utf8 = [];
424
433
  for (let i = 0; i < str.length; i++) {
@@ -795,6 +804,7 @@ module.exports = {
795
804
  showVersion,
796
805
  toolkitRun,
797
806
  toUpperCamelCase,
807
+ toUtf16Bytes,
798
808
  toUtf8Array,
799
809
  utf8ArrayToStr,
800
810
  prompt,
@@ -813,4 +823,4 @@ module.exports = {
813
823
  spliceWildcard,
814
824
  txJsonReplacer,
815
825
  };
816
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcs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QVU7SUFDVixNQUFNO0lBQ04sVUFBVTtJQUNWLFlBQVk7SUFDWixXQUFXO0lBQ1gsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixlQUFlO0lBQ2YsYUFBYTtJQUNiLFdBQVc7SUFDWCxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLFFBQVE7SUFDUixzQkFBc0I7SUFDdEIsU0FBUztJQUNULGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsV0FBVztJQUNYLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLGNBQWM7SUFDZCxNQUFNO0lBQ04sUUFBUTtJQUNSLGVBQWU7SUFDZixXQUFXO0lBQ1gsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQiw4QkFBOEI7SUFDOUIsNEJBQTRCO0lBQzVCLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLDJCQUEyQjtJQUMzQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGNBQWM7Q0FDZixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBleGVjIH0gPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKVxyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpXHJcbmNvbnN0IG5ldCA9IHJlcXVpcmUoXCJuZXRcIilcclxuY29uc3Qgb3MgPSByZXF1aXJlKFwib3NcIilcclxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIilcclxuXHJcbmNvbnN0IGNvbG9yc3RyaXAgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShcclxuICAvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiXHJcbilcclxuXHJcbmNvbnN0IGNvbW1hcyA9IChudW1iZXIpID0+IHtcclxuICBjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKVxyXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnRzLmxlbmd0aCA8PSAxXHJcbiAgICA/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXHJcbiAgICA6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0ZpeGVkVHJ1bmMgKHgsIG4pIHtcclxuICBjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpXHJcbiAgaWYgKG4gPD0gMCkgcmV0dXJuIHZbMF1cclxuICBsZXQgZiA9IHZbMV0gfHwgXCJcIlxyXG4gIGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWBcclxuICB3aGlsZSAoZi5sZW5ndGggPCBuKSBmICs9IFwiMFwiXHJcbiAgcmV0dXJuIGAke3ZbMF19LiR7Zn1gXHJcbn07XHJcblxyXG5jb25zdCB3aG9sZV93aXRzID0gKG51bWJlciwgZGlnaXRzKSA9PiB7XHJcbiAgY29uc3QgbG9va3VwID0gW1xyXG4gICAgeyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDZuLCBzeW1ib2w6IFwibVdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxNW4sIHN5bWJvbDogXCJNV2l0c1wiIH0sXHJcbiAgXVxyXG4gIC8vIGNvbnN0IHJlZ2V4cCA9IC9cXC4wKyR8KD88PVxcLlswLTldKTArJC9cclxuICBjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KGl0ZW0gPT4gbnVtYmVyID49IGl0ZW0udmFsdWUpXHJcbiAgY29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKVxyXG4gIGNvbnN0IGRlY2ltYWxzID0gaXRlbSA/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSkudG9TdHJpbmcoKS5zbGljZSgxKSA6IFwiXCJcclxuICByZXR1cm4gaXRlbSA/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWAgOiBcIihubyBjb2lucylcIlxyXG59XHJcblxyXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWBcclxuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYmdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMwOzQybSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYFxyXG5cclxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbMTs5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGx5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMTs5M20ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbOTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG15ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbOTNtJHtzdHJ9XFx4MWJbMG1gXHJcblxyXG5jb25zdCBibHVlID0gKHN0cikgPT4gYFxceDFiWzM0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHJlZCA9IChzdHIpID0+IGBcXHgxYlszMW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuZnVuY3Rpb24gY291bnRMZWF2ZXMgKHQsIG9iaikge1xyXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwXHJcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIHQpIHJldHVybiAxXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbiAgZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMClcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyAoYXJncykge1xyXG4gIHJldHVybiBhcmdzLmZpbHRlcihhcmcgPT4gIWFyZy5zdGFydHNXaXRoKFwiLS1cIikpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNtZCAoLi4uY29tbWFuZCkge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNvbW1hbmQuam9pbihcIiBcIiksIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59O1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUgKGJ5dGVjb2RlLCAuLi5mbGFncykge1xyXG4gIGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XHJcbiAgICB0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIlxyXG4gICAgcmV0dXJuIGNtZChucHgsIFwid2l0bmV0XCIsIFwicmFkb25cIiwgXCJkcnlydW5cIiwgYnl0ZWNvZGUsIC4uLmZsYWdzKVxyXG4gICAgLy8gLmNhdGNoKChlcnIpID0+IHtcclxuICAgIC8vICAgICBsZXQgZXJyb3JNZXNzYWdlID0gZXJyLm1lc3NhZ2Uuc3BsaXQoJ1xcbicpLnNsaWNlKDEpLmpvaW4oJ1xcbicpLnRyaW0oKVxyXG4gICAgLy8gICAgIGNvbnN0IGVycm9yUmVnZXggPSAvLipeZXJyb3I6ICg/PG1lc3NhZ2U+LiopJC4qL2dtXHJcbiAgICAvLyAgICAgY29uc3QgbWF0Y2hlZCA9IGVycm9yUmVnZXguZXhlYyhlcnIubWVzc2FnZSlcclxuICAgIC8vICAgICBpZiAobWF0Y2hlZCkge1xyXG4gICAgLy8gICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXRjaGVkLmdyb3Vwcy5tZXNzYWdlXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGVycm9yTWVzc2FnZSB8fCBlcnIpXHJcbiAgICAvLyAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgfHwgZXJyKVxyXG4gICAgLy8gfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RGcm9tQXJncyAoYXJncywgZmxhZ3MpIHtcclxuICBjb25zdCBjdXJhdGVkID0ge31cclxuICBpZiAoYXJncyAmJiBmbGFncykge1xyXG4gICAgT2JqZWN0LmtleXMoZmxhZ3MpLmZvckVhY2goZmxhZyA9PiB7XHJcbiAgICAgIGNvbnN0IGZsYWdJbmRleCA9IGFyZ3MuaW5kZXhPZihgLS0ke2ZsYWd9YClcclxuICAgICAgaWYgKGZsYWdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaWYgKGZsYWdzW2ZsYWddLnBhcmFtKSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdXHJcbiAgICAgICAgICBpZiAoIWFyZ3NbZmxhZ0luZGV4ICsgMV0gfHwgYXJnc1tmbGFnSW5kZXggKyAxXS5zdGFydHNXaXRoKFwiLS1cIikpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV1cclxuICAgICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gdHJ1ZVxyXG4gICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAxKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIFthcmdzLCBjdXJhdGVkXVxyXG59XHJcblxyXG5mdW5jdGlvbiBmcm9tSGV4U3RyaW5nIChoZXhTdHJpbmcpIHtcclxuICBpZiAoaGV4U3RyaW5nLnN0YXJ0c1dpdGgoXCIweFwiKSkgaGV4U3RyaW5nID0gaGV4U3RyaW5nLnNsaWNlKDIpXHJcbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShoZXhTdHJpbmcubWF0Y2goLy57MSwyfS9nKS5tYXAoKGJ5dGUpID0+IHBhcnNlSW50KGJ5dGUsIDE2KSkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QgKGlwKSB7XHJcbiAgaWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHsgaXAgPSBpcC5zdWJzdHJpbmcoNykgfVxyXG5cclxuICBpZiAobmV0LmlzSVB2NChpcCkpIHtcclxuICAgIC8vIGNoZWNrIGxvY2FsaG9zdFxyXG4gICAgaWYgKGlwID09PSBcIjEyNy4wLjAuMVwiKSB7IHJldHVybiB0cnVlIH1cclxuXHJcbiAgICAvLyAgICAgICAgIDEwLjAuMC4wIC0gMTAuMjU1LjI1NS4yNTUgICAgICAgIHx8ICAgMTcyLjE2LjAuMCAtIDE3Mi4zMS4yNTUuMjU1ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAxOTIuMTY4LjAuMCAtIDE5Mi4xNjguMjU1LjI1NVxyXG4gICAgcmV0dXJuIC9eKDEwKVxcLiguKilcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApIHx8IC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fCAvXigxOTIpXFwuKDE2OClcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApXHJcbiAgfVxyXG5cclxuICAvLyBlbHNlOiBpcCBpcyBJUHY2XHJcbiAgY29uc3QgZmlyc3RXb3JkID0gaXAuc3BsaXQoXCI6XCIpLmZpbmQoZWwgPT4gISFlbCkgLy8gZ2V0IGZpcnN0IG5vdCBlbXB0eSB3b3JkXHJcblxyXG4gIC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcclxuICBpZiAoaXAgPT09IFwiOjoxXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFRoZSBvcmlnaW5hbCBJUHY2IFNpdGUgTG9jYWwgYWRkcmVzc2VzIChmZWMwOjovMTApIGFyZSBkZXByZWNhdGVkLiBSYW5nZTogZmVjMCAtIGZlZmZcclxuICBlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gVGhlc2UgZGF5cyBVbmlxdWUgTG9jYWwgQWRkcmVzc2VzIChVTEEpIGFyZSB1c2VkIGluIHBsYWNlIG9mIFNpdGUgTG9jYWwuXHJcbiAgLy8gUmFuZ2U6IGZjMDAgLSBmY2ZmXHJcbiAgZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBSYW5nZTogZmQwMCAtIGZjZmZcclxuICBlbHNlIGlmICgvXmZkWzAtZl17Mn0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcclxuICBlbHNlIGlmIChmaXJzdFdvcmQgPT09IFwiZmU4MFwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBEaXNjYXJkIFByZWZpeFxyXG4gIGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGggKHN0ciwgbGVuZ3RoKSB7XHJcbiAgcmV0dXJuIChpc0hleFN0cmluZyhzdHIpICYmXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHxcclxuICAgICAgICAgICAgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMlxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0hleFN0cmluZyAoc3RyKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiBzdHIgPT09IFwic3RyaW5nXCIgJiZcclxuICAgICAgICAoXHJcbiAgICAgICAgICAoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiAvXlthLWZBLUYwLTldKyQvaS50ZXN0KHN0ci5zbGljZSgyKSkpIHx8XHJcbiAgICAgICAgICAgIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyKVxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0hleFN0cmluZyAoYnVmZmVyLCBwcmVmaXgweCA9IGZhbHNlKSB7XHJcbiAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcclxuICByZXR1cm4gKHByZWZpeDB4ID8gXCIweFwiIDogXCJcIikgKyBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYnVmZmVyLCB4ID0+IChcIjAwXCIgKyB4LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKVxyXG4gICAgLmpvaW4oXCJcIilcclxuICAgIC5tYXRjaCgvW2EtZkEtRjAtOV17Mn0vZylcclxuICAgIC5qb2luKFwiXCIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlVVJMICh1cmwpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBwYXJzZWRVcmwucHJvdG9jb2wgKyBcIi8vXCIsXHJcbiAgICAgIHBhcnNlZFVybC5ob3N0LFxyXG4gICAgICBwYXJzZWRVcmwucGF0aG5hbWUuc2xpY2UoMSksXHJcbiAgICAgIHBhcnNlZFVybC5zZWFyY2guc2xpY2UoMSksXHJcbiAgICBdXHJcbiAgfSBjYXRjaCB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFVSTCB3YXMgcHJvdmlkZWQ6ICR7dXJsfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2UgKGNtZCwgbW9kdWxlKSB7XHJcbiAgc2hvd1VzYWdlSGVhZGxpbmUoY21kKVxyXG4gIHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlUm91dGVyKHsgLi4ubW9kdWxlPy5yb3V0ZXIgfSlcclxuICBzaG93VXNhZ2VFbnZhcnMoeyAuLi5tb2R1bGU/LmVudmFycyB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIgKHJvdXRlcikge1xyXG4gIGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpXHJcbiAgaWYgKGNtZHMubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heCguLi5jbWRzLm1hcCgoW2NtZF0pID0+IGNtZC5sZW5ndGgpKVxyXG4gICAgY21kcy5mb3JFYWNoKGNtZCA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke2NtZFswXX0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjbWRbMF0ubGVuZ3RoKX1gLCBcIiAgXCIsIGNtZFsxXS5oaW50KVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUVycm9yIChjbWQsIHN1YmNtZCwgbW9kdWxlLCBlcnJvciwgZmxhZ3MpIHtcclxuICBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKVxyXG4gIGlmIChlcnJvcikge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpXHJcbiAgICBpZiAoZmxhZ3M/LmRlYnVnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yPy5zdGFjaz8uc3BsaXQoXCJcXG5cIilbMF0gfHwgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VFbnZhcnMgKGVudmFycykge1xyXG4gIGlmIChlbnZhcnMpIHtcclxuICAgIGVudmFycyA9IE9iamVjdC5lbnRyaWVzKGVudmFycylcclxuICAgIGlmIChlbnZhcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5FTlZBUlM6XCIpXHJcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgoLi4uZW52YXJzLm1hcCgoW2VudmFyXSkgPT4gZW52YXIubGVuZ3RoKSlcclxuICAgICAgZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcclxuICAgICAgICBpZiAoZW52YXIudG9VcHBlckNhc2UoKS5pbmRleE9mKFwiS0VZXCIpIDwgMCAmJiBwcm9jZXNzLmVudltlbnZhcl0pIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke3llbGxvdyhlbnZhci50b1VwcGVyQ2FzZSgpKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGVudmFyLmxlbmd0aCl9YCwgYCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsIGAgJHtoaW50fWApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRmxhZ3MgKGZsYWdzKSB7XHJcbiAgaWYgKGZsYWdzKSB7XHJcbiAgICBmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKS5maWx0ZXIoKFssIGZsYWddKSA9PiAhZmxhZz8ucGFyYW0pLnNvcnQoKFthXSwgW2JdKSA9PiB7XHJcbiAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICAgIGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMVxyXG4gICAgICBlbHNlIHJldHVybiAwXHJcbiAgICB9KVxyXG4gICAgaWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiXFxuRkxBR1M6XCIpXHJcbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmZsYWdzLmZpbHRlcigoWywgeyBoaW50IH1dKSA9PiBoaW50KS5tYXAoKFtrZXksIHsgcGFyYW0gfV0pID0+IHBhcmFtID8ga2V5Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCArIDMgOiBrZXkubGVuZ3RoKSlcclxuICAgICAgZmxhZ3MuZm9yRWFjaChmbGFnID0+IHtcclxuICAgICAgICBjb25zdCBzdHIgPSBgJHtmbGFnWzBdfSR7ZmxhZ1sxXS5wYXJhbSA/IGdyYXkoYCA8JHtmbGFnWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YFxyXG4gICAgICAgIGlmIChmbGFnWzFdLmhpbnQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgZmxhZ1sxXS5oaW50KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lIChjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XHJcbiAgY29uc29sZS5pbmZvKFwiVVNBR0U6XCIpXHJcbiAgaWYgKHN1YmNtZCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zXHJcbiAgICAvLyBjb25zdCBvcHRpb25zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbmFsaXplID0gKHN0cikgPT4gc3RyLmVuZHNXaXRoKFwiIC4uLl1cIilcclxuICAgICAgICA/IGBbPCR7c3RyLnNsaWNlKDEsIC01KX0+IC4uLl1gXHJcbiAgICAgICAgOiAoXHJcbiAgICAgICAgICBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmBcclxuICAgICAgICApXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMubWFwKHBhcmFtID0+IG9wdGlvbmFsaXplKHBhcmFtKSkuam9pbihcIiBcIikgKyBcIiBcIlxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IG9wdGlvbmFsaXplKHBhcmFtcylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5pbmZvKGAgICAke3doaXRlKGBucHggd2l0bmV0ICR7Y21kfWApfSAke3doaXRlKHN1YmNtZCl9ICR7cGFyYW1zID8gZ3JlZW4ocGFyYW1zKSArIFwiIFwiIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgICBpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5ERVNDUklQVElPTjpcIilcclxuICAgICAgY29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApXHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgICAgJHt3aGl0ZShgbnB4IHdpdG5ldCAke2NtZH1gKX0gPFNVQkNPTU1BTkQ+IC4uLiBbT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VPcHRpb25zIChvcHRpb25zKSB7XHJcbiAgb3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLmZpbHRlcigoWywgb3B0aW9uXSkgPT4gb3B0aW9uPy5wYXJhbSkuc29ydCgoW2FdLCBbYl0pID0+IHtcclxuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIDFcclxuICAgIGVsc2UgcmV0dXJuIDBcclxuICB9KVxyXG4gIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcIlxcbk9QVElPTlM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBvcHRpb25zXHJcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvblsxXS5wYXJhbSA/IG9wdGlvblsxXS5wYXJhbS5sZW5ndGggKyBvcHRpb25bMF0ubGVuZ3RoICsgMyA6IG9wdGlvblswXS5sZW5ndGgpXHJcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpXHJcbiAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgaWYgKG9wdGlvblsxXS5oaW50KSB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWBcclxuICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgLS0ke3N0cn0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjb2xvcnN0cmlwKHN0cikubGVuZ3RoKX1gLCBcIiAgXCIsIG9wdGlvblsxXS5oaW50KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlU3ViY29tbWFuZCAoY21kLCBzdWJjbWQsIG1vZHVsZSkge1xyXG4gIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpXHJcbiAgc2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MsIC4uLm1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9ucyB9KVxyXG4gIHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pXHJcbiAgc2hvd1VzYWdlRW52YXJzKG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8uZW52YXJzIHx8IG1vZHVsZT8uZW52YXJzKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VmVyc2lvbiAoKSB7XHJcbiAgY29uc29sZS5pbmZvKGAke21jeWFuKGBXaXRuZXQgU0RLIHYke3JlcXVpcmUoXCIuLi8uLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbn1gKX1gKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcgKHN0cikge1xyXG4gIGxldCBtYXhBcmdzSW5kZXggPSAwXHJcbiAgaWYgKHN0cikge1xyXG4gICAgbGV0IG1hdGNoXHJcbiAgICBjb25zdCByZWdleHAgPSAvXFxcXFxcZFxcXFwvZ1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGFyZ3NJbmRleCA9IHBhcnNlSW50KG1hdGNoWzBdWzFdKSArIDFcclxuICAgICAgaWYgKGFyZ3NJbmRleCA+IG1heEFyZ3NJbmRleCkgbWF4QXJnc0luZGV4ID0gYXJnc0luZGV4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBtYXhBcmdzSW5kZXhcclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tScGNXaWxkY2FyZHMgKHdpbGRjYXJkcykge1xyXG4gIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCh3aWxkY2FyZCA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSkgd2lsZGNhcmQuZm9yRWFjaChpdGVtID0+IGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pKVxyXG4gICAgICBlbHNlIGNoZWNrUnBjV2lsZGNhcmRzKHdpbGRjYXJkKVxyXG4gICAgfSlcclxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xyXG4gICAgd2lsZGNhcmRzLmZvckVhY2god2lsZGNhcmQgPT4gY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpKVxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbGRjYXJkcyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgaWYgKGlzV2lsZGNhcmQod2lsZGNhcmRzKSkge1xyXG4gICAgICBjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKVxyXG4gICAgICBpZiAoY2hhciA8IFwiMVwiIHx8IGNoYXIgPiBcIjlcIikge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFsxIC4uIDldXCIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2lsZGNhcmQgKHN0cikge1xyXG4gIHJldHVybiBzdHIubGVuZ3RoID09PSAzICYmIC9cXFxcXFxkXFxcXC9nLnRlc3Qoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlV2lsZGNhcmRzIChvYmosIGFyZ3MpIHtcclxuICBpZiAoYXJncy5sZW5ndGggPiAxMCkgYXJncyA9IGFyZ3Muc2xpY2UoMCwgMTApXHJcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcclxuICAgICAgY29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGBcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwod2lsZGNhcmQsIGFyZ3NbYXJnSW5kZXhdKVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAob2JqICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgb2JqID0gb2JqLm1hcCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgPyByZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBhcmdzKVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQgKG9iaiwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpIHtcclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGNvbnN0IHdpbGRjYXJkID0gYFxcXFwke2FyZ0luZGV4fVxcXFxgXHJcbiAgICBvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpXHJcbiAgICBmb3IgKGxldCBqID0gYXJnSW5kZXggKyAxOyBqIDwgYXJnc0NvdW50OyBqKyspIHtcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYClcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgIG9iaiA9IG9iai5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgID8gc3BsaWNlV2lsZGNhcmQodmFsdWUsIGFyZ0luZGV4LCBhcmdWYWx1ZSwgYXJnc0NvdW50KVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdG9vbGtpdFJ1biAoc2V0dGluZ3MsIGFyZ3MpIHtcclxuICBjb25zdCBjbWQgPSBgJHtzZXR0aW5ncy5wYXRocy50b29sa2l0QmluUGF0aH0gJHthcmdzLmpvaW4oXCIgXCIpfWBcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZXhlYyhjbWQsIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlIChzdHIpIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcYihcXHcpL2csIGZ1bmN0aW9uIChtYXRjaCwgY2FwdHVyZSkge1xyXG4gICAgcmV0dXJuIGNhcHR1cmUudG9VcHBlckNhc2UoKVxyXG4gIH0pLnJlcGxhY2UoL1xccysvZywgXCJcIilcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGY4QXJyYXkgKHN0cikge1xyXG4gIGNvbnN0IHV0ZjggPSBbXVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKVxyXG4gICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKVxyXG4gICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhjMCB8IChjaGFyY29kZSA+PiA2KSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgaWYgKGNoYXJjb2RlIDwgMHhkODAwIHx8IGNoYXJjb2RlID49IDB4ZTAwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksXHJcbiAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgeyAvLyBzdXJyb2dhdGUgcGFpclxyXG4gICAgICBpKytcclxuICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxyXG4gICAgICAvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXHJcbiAgICAgIC8vIDIwIGJpdHMgb2YgMHgwLTB4RkZGRkYgaW50byB0d28gaGFsdmVzXHJcbiAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpIDw8IDEwKSB8XHJcbiAgICAgICAgICAgICAgICAoc3RyLmNoYXJDb2RlQXQoaSkgJiAweDNmZikpXHJcbiAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+IDE4KSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiAxMikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHV0ZjhcclxufVxyXG5cclxuZnVuY3Rpb24gdXRmOEFycmF5VG9TdHIgKGFycmF5KSB7XHJcbiAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoXHJcbiAgbGV0IG91dCA9IFwiXCI7IGxldCBpID0gMDsgbGV0IGNcclxuICBsZXQgY2hhcjIsIGNoYXIzXHJcbiAgd2hpbGUgKGkgPCBsZW4pIHtcclxuICAgIGMgPSBhcnJheVtpKytdXHJcbiAgICBzd2l0Y2ggKGMgPj4gNCkge1xyXG4gICAgICBjYXNlIDA6IGNhc2UgMTogY2FzZSAyOiBjYXNlIDM6IGNhc2UgNDogY2FzZSA1OiBjYXNlIDY6IGNhc2UgNzpcclxuICAgICAgICAvLyAweHh4eHh4eFxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxMjogY2FzZSAxMzpcclxuICAgICAgICAvLyAxMTB4IHh4eHggICAxMHh4IHh4eHhcclxuICAgICAgICBjaGFyMiA9IGFycmF5W2krK11cclxuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDFGKSA8PCA2KSB8IChjaGFyMiAmIDB4M0YpKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgLy8gMTExMCB4eHh4ICAxMHh4IHh4eHggIDEweHggeHh4eFxyXG4gICAgICAgIGNoYXIyID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIGNoYXIzID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MEYpIDw8IDEyKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgKChjaGFyMiAmIDB4M0YpIDw8IDYpIHxcclxuICAgICAgICAgICAgICAgICAgICAoKGNoYXIzICYgMHgzRikgPDwgMCkpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG91dFxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQgKHF1ZXN0aW9uKSB7XHJcbiAgY29uc3QgcmVhZGxpbmVJbnRlcmZhY2UgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXHJcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxyXG4gIH0pXHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIHJlYWRsaW5lSW50ZXJmYWNlLnF1ZXN0aW9uKGAke3F1ZXN0aW9ufSBgLCAocmVzcG9uc2UpID0+IHtcclxuICAgICAgcmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKVxyXG4gICAgICByZXNvbHZlKHJlc3BvbnNlLnRyaW0oKSlcclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0ZXIgKHByb21pc2UpIHtcclxuICBjb25zdCBsb2FkaW5nID0gKCgpID0+IHtcclxuICAgIGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdXHJcbiAgICBsZXQgaSA9IDBcclxuICAgIHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGkgPSAoaSA+IDMpID8gMCA6IGlcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxcYlxcYiR7aFtpXX0gYClcclxuICAgICAgaSsrXHJcbiAgICB9LCA1MClcclxuICB9KSgpXHJcbiAgcmV0dXJuIHByb21pc2VcclxuICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwobG9hZGluZylcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIilcclxuICAgICAgcmV0dXJuIHJlc3VsdFxyXG4gICAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VDaGVja2xpc3RzIChjaGVja2xpc3RzKSB7XHJcbiAgaWYgKGNoZWNrbGlzdHMgJiYgT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3QgaGVhZGxpbmVzID0gW1wiTk9ERVNcIiwgLi4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKGtleSA9PiBgOiR7a2V5fWApXVxyXG4gICAgY2hlY2tsaXN0cyA9IE9iamVjdC52YWx1ZXMoY2hlY2tsaXN0cylcclxuICAgIGNvbnN0IHVybHMgPSBPYmplY3Qua2V5cyhjaGVja2xpc3RzWzBdKVxyXG4gICAgY29uc3QgcmVjb3JkcyA9IHVybHMubWFwKHVybCA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yKS5sZW5ndGhcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBlcnJvcnMgPT09IGNoZWNrbGlzdHMubGVuZ3RoID8gcmVkKHVybCkgOiAoZXJyb3JzID4gMCA/IG15ZWxsb3codXJsKSA6IG1jeWFuKHVybCkpLFxyXG4gICAgICAgIC4uLmNoZWNrbGlzdHMubWFwKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yXHJcbiAgICAgICAgICA/IHJlZChjaGVja2xpc3RbdXJsXSlcclxuICAgICAgICAgIDogKGNoZWNrbGlzdFt1cmxdID09PSB0cnVlID8gbGN5YW4oXCJBeWVcIikgOiBjeWFuKFwiTmF5XCIpKVxyXG4gICAgICAgICksXHJcbiAgICAgIF1cclxuICAgIH0pXHJcbiAgICB0cmFjZVRhYmxlKHJlY29yZHMsIHtcclxuICAgICAgaGVhZGxpbmVzLFxyXG4gICAgICBtYXhDb2x1bW5XaWR0aDogMzEsXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VIZWFkZXIgKGhlYWRsaW5lLCBjb2xvciA9IG5vcm1hbCwgaW5kZW50ID0gXCJcIiwpIHtcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJBgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7Y29sb3IoaGVhZGxpbmUpfSDilIJgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUmGApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVGFibGUgKHJlY29yZHMsIG9wdGlvbnMpIHtcclxuICBjb25zdCBzdHJpbmdpZnkgPSAoZGF0YSwgaHVtYW5pemVycywgaW5kZXgpID0+IGh1bWFuaXplcnMgJiYgaHVtYW5pemVyc1tpbmRleF0gPyBodW1hbml6ZXJzW2luZGV4XShkYXRhKS50b1N0cmluZygpIDogZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiXHJcbiAgY29uc3QgbWF4ID0gKGEsIGIpID0+IGEgPiBiID8gYSA6IGJcclxuICBjb25zdCByZWR1Y2VNYXggPSAobnVtYmVycykgPT4gbnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IHByZXYgPiBjdXJyID8gcHJldiA6IGN1cnIsIDApXHJcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cclxuICBjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIlxyXG4gIGNvbnN0IG51bUNvbHVtbnMgPSByZWR1Y2VNYXgocmVjb3Jkcy5tYXAocmVjb3JkID0+IHJlY29yZD8ubGVuZ3RoIHx8IDEpKVxyXG4gIGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODBcclxuICBjb25zdCB0YWJsZSA9IHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKVxyXG4gIG9wdGlvbnMud2lkdGhzID0gb3B0aW9ucz8ud2lkdGhzIHx8IHRhYmxlLm1hcCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgbGV0IG1heFdpZHRoID0gcmVkdWNlTWF4KGNvbHVtbi5tYXAoZmllbGQgPT4gY29sb3JzdHJpcChzdHJpbmdpZnkoZmllbGQsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGluZGV4KSkubGVuZ3RoKSlcclxuICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdKSB7XHJcbiAgICAgIG1heFdpZHRoID0gbWF4KG1heFdpZHRoLCBjb2xvcnN0cmlwKG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKSkubGVuZ3RoKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWluKG1heFdpZHRoLCBtYXhDb2x1bW5XaWR0aClcclxuICB9KVxyXG4gIGxldCBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilKzilIBcIil94pSA4pSQYClcclxuICBpZiAob3B0aW9ucz8uaGVhZGxpbmVzKSB7XHJcbiAgICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhcHRpb24gPSBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIilcclxuICAgICAgY29uc3QgY2FwdGlvbkxlbmd0aCA9IGNvbG9yc3RyaXAoY2FwdGlvbikubGVuZ3RoXHJcbiAgICAgIHJldHVybiBgJHt3aGl0ZShjYXB0aW9uKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGNhcHRpb25MZW5ndGgpfWBcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2hlYWRsaW5lLmpvaW4oXCIg4pSCIFwiKX0g4pSCYClcclxuICAgIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSc4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS84pSAXCIpfeKUgOKUpGApXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGxpbmUgPSBcIlwiXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bUNvbHVtbnM7IGorKykge1xyXG4gICAgICBsZXQgZGF0YSA9IHRhYmxlW2pdW2ldXHJcbiAgICAgIGxldCBjb2xvclxyXG4gICAgICBpZiAob3B0aW9ucz8uY29sb3JzICYmIG9wdGlvbnMuY29sb3JzW2pdKSB7XHJcbiAgICAgICAgY29sb3IgPSBvcHRpb25zLmNvbG9yc1tqXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbG9yID0gdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcclxuICAgICAgICAgID8gZ3JlZW5cclxuICAgICAgICAgIDogKE51bWJlcihkYXRhKSA9PT0gZGF0YSAmJiBkYXRhICUgMSAhPT0gMCAvLyBpcyBmbG9hdCBudW1iZXI/XHJcbiAgICAgICAgICAgID8geWVsbG93XHJcbiAgICAgICAgICAgIDogKHgpID0+IHhcclxuICAgICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICBkYXRhID0gc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGopXHJcbiAgICAgIGlmIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoKSB7XHJcbiAgICAgICAgd2hpbGUgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGggLSAzKSB7XHJcbiAgICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgwLCAtMSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YSArPSBcIi4uLlwiXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoXHJcbiAgICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbal1bMF0gPT09IFwiOlwiKSB7XHJcbiAgICAgICAgZGF0YSA9IGAke2NvbG9yKGRhdGEpfSR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9YFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEgPSBgJHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX0ke2NvbG9yKGRhdGEpfWBcclxuICAgICAgfVxyXG4gICAgICBsaW5lICs9IGDilIIgJHtkYXRhfSBgXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50fSR7bGluZX3ilIJgKVxyXG4gIH1cclxuICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLTilIBcIil94pSA4pSYYClcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhbnNwb3NlIChyZWNvcmRzLCBudW1Db2x1bW5zKSB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFtdXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvbHVtbnM7IGluZGV4KyspIHtcclxuICAgIGNvbHVtbnMucHVzaChyZWNvcmRzLm1hcChyb3cgPT4gcm93W2luZGV4XSkpXHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW5zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHR4SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlKSAvIDEwICoqIDlcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHhSZWNlaXB0SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlPy5wZWRyb3MpIC8gMTAgKiogOVxyXG4gICAgY2FzZSBcInRpbWVzdGFtcFwiOlxyXG4gICAgICByZXR1cm4gbW9tZW50LnVuaXgodmFsdWUpLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQgKHJlY2VpcHQpIHtcclxuICBpZiAocmVjZWlwdD8uY29uZmlybWF0aW9ucykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBDaGVja3BvaW50ICMke2NvbW1hcyhyZWNlaXB0LmNvbmZpcm1hdGlvbnMpfS4uLmApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UgKHJlY2VpcHQpIHtcclxuICBjb25zdCBjYXB0aW9ucyA9IHtcclxuICAgIHBlbmRpbmc6IFwiQXdhaXRpbmcgcmVsYXkuLi5cIixcclxuICAgIC8vIGNvbmZpcm1lZDogXCJUcmFuc2FjdGlvbiBjb25maXJtZWQ6XCIsXHJcbiAgICAvLyBmaW5hbGl6ZWQ6IFwiVHJhbnNhY3Rpb24gZmluYWxpemVkOlwiLFxyXG4gICAgcmVsYXllZDogXCJBd2FpdGluZyBpbmNsdXNpb24uLi5cIixcclxuICAgIG1pbmVkOiBcIkF3YWl0aW5nIGNvbmZpcm1hdGlvbnMuLi5cIixcclxuICB9XHJcbiAgY29uc3QgY2FwdGlvbiA9IGNhcHRpb25zW3JlY2VpcHQuc3RhdHVzXVxyXG4gIGlmIChjYXB0aW9uKSBjb25zb2xlLmluZm8oYCA+ICR7Y2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdfWApXHJcbiAgaWYgKFtcImZpbmFsaXplZFwiLCBcImNvbmZpcm1lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgaGFzaDogICAke2dyYXkocmVjZWlwdD8uYmxvY2tIYXNoKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBtaW5lcjogICR7Y3lhbihyZWNlaXB0Py5ibG9ja01pbmVyKX1gKTtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgZXBvY2g6ICAke3doaXRlKGNvbW1hcyhyZWNlaXB0Py5ibG9ja0Vwb2NoKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gSW5jbHVkZWQgYXQ6ICAke2dyZWVuKG1vbWVudC51bml4KHJlY2VpcHQ/LmJsb2NrVGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gJHtyZWNlaXB0LnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICsgcmVjZWlwdC5zdGF0dXMuc2xpY2UoMSl9IGF0OiAke21ncmVlbihtb21lbnQudW5peChyZWNlaXB0LnRpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdCAocmVjZWlwdCkge1xyXG4gIGNvbnN0IGNhcHRpb25zID0ge1xyXG4gICAgRGF0YVJlcXVlc3Q6IFwiID4gRFJUIGhhc2g6ICAgICBcIixcclxuICAgIFZhbHVlVHJhbnNmZXI6IFwiID4gVlRUIGhhc2g6ICAgICBcIixcclxuICB9XHJcbiAgY29uc29sZS5pbmZvKGAke2NhcHRpb25zW3JlY2VpcHQudHlwZV0gfHwgXCIgPiBUWCBoYXNoOiAgICAgIFwifSR7d2hpdGUocmVjZWlwdC5oYXNoKX1gKVxyXG4gIGlmIChyZWNlaXB0Py5kcm9IYXNoKSBjb25zb2xlLmluZm8oYCA+IERSTyBoYXNoOiAgICAgJHtncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LnJhZEhhc2gpIGNvbnNvbGUuaW5mbyhgID4gUkFEIGhhc2g6ICAgICAke21ncmVlbihyZWNlaXB0LnJhZEhhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LmRyb1NMQSkgY29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LndpdGhkcmF3ZXIpIHtcclxuICAgIGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcclxuICAgICAgY29uc29sZS5pbmZvKGAgPiBWYWxpZGF0b3I6ICAgICR7bWN5YW4ocmVjZWlwdC52YWxpZGF0b3IpfWApXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdGhkcmF3ZXI6ICAgJHttbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApXHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBTaWduZXIvczogICAgICR7bW1hZ2VudGEoc2lnbmVyc1swXSl9YClcclxuICAgIHNpZ25lcnMuc2xpY2UoMSkuZm9yRWFjaChzaWduZXIgPT4ge1xyXG4gICAgICBjb25zb2xlLmluZm8oYCAgICAgICAgICAgICAgICAgJHttbWFnZW50YShzaWduZXIpfWApXHJcbiAgICB9KVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8ucmVjaXBpZW50cykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBSZWNpcGllbnQvczogICR7XHJcbiAgICAgIG1ibHVlKHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKSlcclxuICAgIH1gKVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8uZmVlcykgY29uc29sZS5pbmZvKGAgPiBGZWU6ICAgICAgICAgICR7eWVsbG93KHJlY2VpcHQuZmVlcy50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8udmFsdWUpIGNvbnNvbGUuaW5mbyhgID4gVmFsdWU6ICAgICAgICAke215ZWxsb3cocmVjZWlwdC52YWx1ZS50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8ud2VpZ2h0KSBjb25zb2xlLmluZm8oYCA+IFdlaWdodDogICAgICAgJHttZ3JlZW4oY29tbWFzKHJlY2VpcHQud2VpZ2h0KSl9YClcclxuICBpZiAocmVjZWlwdD8ud2l0bmVzc2VzKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdG5lc3NlczogICAgJHtyZWNlaXB0LndpdG5lc3Nlc31gKVxyXG4gIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbiAodHJhbnNtaXR0ZXIsIG9wdGlvbnMpIHtcclxuICBjb25zdCBjb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8ICgoeCkgPT4gYFxceDFiWzMwOzQ1bSR7eH1cXHgxYlswbWApXHJcbiAgbGV0IHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zaWduVHJhbnNhY3Rpb24ob3B0aW9ucywgb3B0aW9ucz8ucmVsb2FkKVxyXG4gIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXHJcbiAgICAgIGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gXHJcbiAgICApXHJcbiAgfVxyXG4gIGlmIChvcHRpb25zPy5oZWFkbGluZSkge1xyXG4gICAgY29uc29sZS5pbmZvKGBcXG4gJHtjb2xvcihgICAke29wdGlvbnMuaGVhZGxpbmV9ICBgKX1cXG5gKVxyXG4gIH1cclxuICB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KVxyXG4gIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcclxuICAgIC8vIHByb21wdCB1c2VyIGNvbmZpcm1hdGlvblxyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlcXVpcmUoXCJpbnF1aXJlclwiKS5jcmVhdGVQcm9tcHRNb2R1bGUoKShbe1xyXG4gICAgICBtZXNzYWdlOiBcIlNlbmQgdHJhbnNhY3Rpb24/XCIsXHJcbiAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxyXG4gICAgICBuYW1lOiBcImNvbnRpbnVlXCIsXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4gICAgfV0pXHJcbiAgICBpZiAoIWFuc3dlci5jb250aW51ZSkge1xyXG4gICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgfVxyXG4gIH1cclxuICB0cnkge1xyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKVxyXG4gICAgaWYgKG9wdGlvbnM/LmF3YWl0IHx8IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbnM6IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICBvbkNoZWNrcG9pbnQ6IHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgICAgICAgb25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB7IHN0YXR1czogcmVjZWlwdD8uc3RhdHVzLCB0aW1lc3RhbXA6IHJlY2VpcHQ/LnRpbWVzdGFtcCB8fCBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSB9XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhkYXRhKVxyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgaWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gKVxyXG4gICAgfVxyXG4gICAgdGhyb3cgZXJyXHJcbiAgfVxyXG4gIHJldHVybiByZWNlaXB0XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIGNvbG9yczoge1xyXG4gICAgYmJsdWUsXHJcbiAgICBiY3lhbixcclxuICAgIGJncmVlbixcclxuICAgIGJsdWUsXHJcbiAgICBicmVkLFxyXG4gICAgYnZpb2xldCxcclxuICAgIGN5YW4sXHJcbiAgICBncmF5LFxyXG4gICAgZ3JlZW4sXHJcbiAgICBtYWdlbnRhLFxyXG4gICAgcmVkLFxyXG4gICAgd2hpdGUsXHJcbiAgICB5ZWxsb3csXHJcbiAgICBub3JtYWwsXHJcbiAgICBsY3lhbixcclxuICAgIGxncmF5LFxyXG4gICAgbGdyZWVuLFxyXG4gICAgbG1hZ2VudGEsXHJcbiAgICBseWVsbG93LFxyXG4gICAgbWJsdWUsXHJcbiAgICBtY3lhbixcclxuICAgIG1ncmVlbixcclxuICAgIG1tYWdlbnRhLFxyXG4gICAgbXJlZCxcclxuICAgIG15ZWxsb3csXHJcbiAgfSxcclxuICBjb2xvcnN0cmlwLFxyXG4gIGNvbW1hcyxcclxuICB3aG9sZV93aXRzLFxyXG4gIHRvRml4ZWRUcnVuYyxcclxuICBjb3VudExlYXZlcyxcclxuICBleGVjUmFkb25CeXRlY29kZSxcclxuICBkZWxldGVFeHRyYUZsYWdzLFxyXG4gIGV4dHJhY3RGcm9tQXJncyxcclxuICBmcm9tSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nT2ZMZW5ndGgsXHJcbiAgdG9IZXhTdHJpbmcsXHJcbiAgcGFyc2VVUkwsXHJcbiAgaXBJc1ByaXZhdGVPckxvY2FsaG9zdCxcclxuICBzaG93VXNhZ2UsXHJcbiAgc2hvd1VzYWdlRXJyb3IsXHJcbiAgc2hvd1VzYWdlU3ViY29tbWFuZCxcclxuICBzaG93VmVyc2lvbixcclxuICB0b29sa2l0UnVuLFxyXG4gIHRvVXBwZXJDYW1lbENhc2UsXHJcbiAgdG9VdGY4QXJyYXksXHJcbiAgdXRmOEFycmF5VG9TdHIsXHJcbiAgcHJvbXB0LFxyXG4gIHByb21wdGVyLFxyXG4gIHRyYWNlQ2hlY2tsaXN0cyxcclxuICB0cmFjZUhlYWRlcixcclxuICB0cmFjZVRhYmxlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb24sXHJcbiAgdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQsXHJcbiAgY2hlY2tScGNXaWxkY2FyZHMsXHJcbiAgaXNXaWxkY2FyZCxcclxuICBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcsXHJcbiAgcmVwbGFjZVdpbGRjYXJkcyxcclxuICBzcGxpY2VXaWxkY2FyZCxcclxuICB0eEpzb25SZXBsYWNlcixcclxufVxyXG4iXX0=
826
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN6QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEMsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzFCLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFcEMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQ3JDLDZFQUE2RSxFQUFFLEVBQUUsQ0FDbEYsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7SUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7UUFDOUIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyRCxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsU0FBUyxZQUFZLENBQUUsQ0FBQyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ2xCLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQTtJQUM3QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFBO0FBQ3ZCLENBQUM7QUFBQSxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtRQUMvQixFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7UUFDckMsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1FBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtRQUN0QyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7S0FDdkMsQ0FBQTtJQUNELHlDQUF5QztJQUN6QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFBO0FBQzVILENBQUMsQ0FBQTtBQUVELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUE7QUFDdkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFDbEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUE7QUFFckQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFDNUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFDaEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7QUFFL0MsU0FBUyxXQUFXLENBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0MsSUFBSSxHQUFHLFlBQVksQ0FBQztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7UUFDbEYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3JGLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFFLElBQUk7SUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFFLEdBQUcsT0FBTztJQUN0QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2YsQ0FBQztZQUNELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2hCLENBQUM7WUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFBQSxDQUFDO0FBRUYsS0FBSyxVQUFVLGlCQUFpQixDQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUs7SUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDdkMsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUMxRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDaEUsb0JBQW9CO1FBQ3BCLDRFQUE0RTtRQUM1RSx5REFBeUQ7UUFDekQsbURBQW1EO1FBQ25ELHFCQUFxQjtRQUNyQixnREFBZ0Q7UUFDaEQsUUFBUTtRQUNSLHVDQUF1QztRQUN2Qyx5Q0FBeUM7UUFDekMsS0FBSztJQUNQLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsSUFBSSxFQUFFLEtBQUs7SUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQzNDLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDakUsTUFBTSxLQUFLLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUE7b0JBQ3pELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTt3QkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQzNCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7b0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUMzQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDeEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFFLFNBQVM7SUFDL0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUFFLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEYsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUUsRUFBRTtJQUNqQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0lBRTlELElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ25CLGtCQUFrQjtRQUNsQixJQUFJLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFBO1FBQUMsQ0FBQztRQUV2Qyx5SUFBeUk7UUFDekksT0FBTywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksNkNBQTZDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMvSSxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsMkJBQTJCO0lBRTVFLGtDQUFrQztJQUNsQyxJQUFJLEVBQUUsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFN0Isd0ZBQXdGO1NBQ25GLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXRELDJFQUEyRTtJQUMzRSxxQkFBcUI7U0FDaEIsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXBELHFCQUFxQjtTQUNoQixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFcEQsNkRBQTZEO1NBQ3hELElBQUksU0FBUyxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUxQyxpQkFBaUI7U0FDWixJQUFJLFNBQVMsS0FBSyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFekMseURBQXlEO0lBQ3pELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUUsR0FBRyxFQUFFLE1BQU07SUFDdkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDbEIsQ0FDRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMxRCxHQUFHLENBQUMsTUFBTSxLQUFLLE1BQU0sR0FBRyxDQUFDLENBQzVCLENBQ04sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFFLEdBQUc7SUFDdkIsT0FBTyxDQUNMLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDbkIsQ0FDRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQzlCLENBQ04sSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFFLE1BQU0sRUFBRSxRQUFRLEdBQUcsS0FBSztJQUM1QyxJQUFJLE1BQU0sWUFBWSxVQUFVO1FBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JHLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDUixLQUFLLENBQUMsaUJBQWlCLENBQUM7U0FDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2IsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEdBQUc7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsT0FBTztZQUNMLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSTtZQUN6QixTQUFTLENBQUMsSUFBSTtZQUNkLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDMUIsQ0FBQTtJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksU0FBUyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUUsR0FBRyxFQUFFLE1BQU07SUFDN0IsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDdEIsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ3RDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDcEMsZUFBZSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN0QyxlQUFlLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBRSxNQUFNO0lBQzlCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1RixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDeEQsbUJBQW1CLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDeEIsSUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUE7UUFDdEQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUUsTUFBTTtJQUM5QixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDL0IsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLG1CQUFtQixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDL0ksQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDeEcsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsS0FBSztJQUM1QixJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7aUJBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQTs7Z0JBQ25CLE9BQU8sQ0FBQyxDQUFBO1FBQ2YsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtZQUNqSixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNuQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUE7Z0JBQzNFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNyRyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtJQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RCLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQTtRQUMxQyxpREFBaUQ7UUFDakQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUTtnQkFDL0IsQ0FBQyxDQUFDLENBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQ3hELENBQUE7WUFDSCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1lBQ2xFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO1FBQ3ZILElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNsRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMscUNBQXFDLENBQUMsQ0FBQTtJQUNyRixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsT0FBTztJQUNoQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN4RixJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTthQUNmLElBQUksQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQTs7WUFDbkIsT0FBTyxDQUFDLENBQUE7SUFDZixDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzFCLE1BQU0sU0FBUyxHQUFHLE9BQU87YUFDdEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDakcsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRCxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUE7Z0JBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkcsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTTtJQUMvQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3pFLGNBQWMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUN2RSxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ2xFLENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxlQUFlLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ2xGLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFFLEdBQUc7SUFDdkMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ3BCLElBQUksR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFBO1FBQ1QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFBO1FBQ3hCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDM0MsSUFBSSxTQUFTLEdBQUcsWUFBWTtnQkFBRSxZQUFZLEdBQUcsU0FBUyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUUsU0FBUztJQUNuQyxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7O2dCQUN6RSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNsQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUM1RCxDQUFDO1NBQU0sSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtZQUNyRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUUsR0FBRztJQUN0QixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsR0FBRyxFQUFFLElBQUk7SUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUU7UUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUMsSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsS0FBSyxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMxRCxNQUFNLFFBQVEsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFBO1lBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0RSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUMvQixDQUFDLENBQUMsS0FBSyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUztJQUN6RCxJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFBO1FBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4QyxLQUFLLElBQUksQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlDLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsRCxDQUFDO0lBQ0gsQ0FBQztTQUFNLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0RSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztZQUN0RCxDQUFDLENBQUMsS0FBSyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBRSxRQUFRLEVBQUUsSUFBSTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtJQUNoRSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDZixDQUFDO1lBQ0QsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDaEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUUsR0FBRztJQUM1QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsS0FBSyxFQUFFLE9BQU87UUFDcEQsT0FBTyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDOUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBRztJQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUM7UUFDekIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUUsR0FBRztJQUN2QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUE7SUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEMsSUFBSSxRQUFRLEdBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbkMsSUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQzlCLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdCLENBQUM7YUFBTSxJQUFJLFFBQVEsR0FBRyxNQUFNLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFDL0IsSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDN0IsQ0FBQzthQUFNLENBQUMsQ0FBQyxpQkFBaUI7WUFDeEIsQ0FBQyxFQUFFLENBQUE7WUFDSCxxQ0FBcUM7WUFDckMsd0NBQXdDO1lBQ3hDLHlDQUF5QztZQUN6QyxRQUFRLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUMvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFDaEMsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQy9CLElBQUksR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUUsS0FBSztJQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ3hCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLElBQUksS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUNoQixPQUFPLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUM7Z0JBQzVELFdBQVc7Z0JBQ1gsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQzdCLE1BQUs7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUFDLEtBQUssRUFBRTtnQkFDZCx3QkFBd0I7Z0JBQ3hCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDbEIsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUM5RCxNQUFLO1lBQ1AsS0FBSyxFQUFFO2dCQUNMLGtDQUFrQztnQkFDbEMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUNsQixLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2xCLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckIsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNsQyxNQUFLO1FBQ1QsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxLQUFLLFVBQVUsTUFBTSxDQUFFLFFBQVE7SUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQ2pELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RELGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUMxQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELEtBQUssVUFBVSxRQUFRLENBQUUsT0FBTztJQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNULE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRTtZQUN0QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNwQyxDQUFDLEVBQUUsQ0FBQTtRQUNMLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNSLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDSixPQUFPLE9BQU87U0FDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDYixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUIsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBRSxVQUFVO0lBQ2xDLElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM3RSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN0QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFDckYsT0FBTztnQkFDTCxNQUFNLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRixHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSztvQkFDNUQsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3pEO2FBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsVUFBVSxDQUFDLE9BQU8sRUFBRTtZQUNsQixTQUFTO1lBQ1QsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBRSxRQUFRLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxNQUFNLEdBQUcsRUFBRTtJQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0QsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUM1SSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0YsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFBO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRSxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDNUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDOUQsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM5RyxJQUFJLE9BQU8sRUFBRSxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUMzQyxDQUFDLENBQUMsQ0FBQTtJQUNGLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDcEQsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDdkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUM1RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFBO1lBQ2hELE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQTtRQUNuRSxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDeEMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN0QixJQUFJLEtBQUssQ0FBQTtZQUNULElBQUksT0FBTyxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUTtvQkFDOUIsQ0FBQyxDQUFDLEtBQUs7b0JBQ1AsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxtQkFBbUI7d0JBQzVELENBQUMsQ0FBQyxNQUFNO3dCQUNSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNYLENBQUE7WUFDTCxDQUFDO1lBQ0QsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUM5QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUM7Z0JBQzdDLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3BELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMxQixDQUFDO2dCQUNELElBQUksSUFBSSxLQUFLLENBQUE7WUFDZixDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtZQUMxQyxJQUFJLE9BQU8sRUFBRSxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFBO1lBQ3RFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUE7WUFDdEUsQ0FBQztZQUNELElBQUksSUFBSSxLQUFLLElBQUksR0FBRyxDQUFBO1FBQ3RCLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUNELFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUMvRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3RELENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBRSxPQUFPLEVBQUUsVUFBVTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFDbEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBRSxHQUFHLEVBQUUsS0FBSztJQUNqQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDakMsS0FBSyxJQUFJO1lBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUM5QyxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxPQUFPO1lBQ1YsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNsQztZQUNFLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBRSxHQUFHLEVBQUUsS0FBSztJQUN4QyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLEtBQUs7WUFDUixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDakMsS0FBSyxJQUFJO1lBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUM5QyxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxPQUFPO1lBQ1YsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDMUMsS0FBSyxXQUFXO1lBQ2QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQzdEO1lBQ0UsT0FBTyxLQUFLLENBQUE7SUFDaEIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFFLE9BQU87SUFDNUMsSUFBSSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEUsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDhCQUE4QixDQUFFLE9BQU87SUFDOUMsTUFBTSxRQUFRLEdBQUc7UUFDZixPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLHVDQUF1QztRQUN2Qyx1Q0FBdUM7UUFDdkMsT0FBTyxFQUFFLHVCQUF1QjtRQUNoQyxLQUFLLEVBQUUsMkJBQTJCO0tBQ25DLENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3hDLElBQUksT0FBTztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUMzRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0RSxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDakgsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2pLLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBRSxPQUFPO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHO1FBQ2YsV0FBVyxFQUFFLG1CQUFtQjtRQUNoQyxhQUFhLEVBQUUsbUJBQW1CO0tBQ25DLENBQUE7SUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxtQkFBbUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN0RixJQUFJLE9BQU8sRUFBRSxPQUFPO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEYsSUFBSSxPQUFPLEVBQUUsT0FBTztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2pGLElBQUksT0FBTyxFQUFFLE1BQU07UUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDdkYsSUFBSSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDeEIsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDOUQsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0RCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUN0RixFQUFFLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxJQUFJO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZGLElBQUksT0FBTyxFQUFFLEtBQUs7UUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDMUYsSUFBSSxPQUFPLEVBQUUsTUFBTTtRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZGLElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGdCQUFnQixDQUFFLFdBQVcsRUFBRSxPQUFPO0lBQ25ELE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pFLElBQUksT0FBTyxHQUFHLE1BQU0sV0FBVyxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3pFLElBQUksT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FDeEQsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFELENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BCLDJCQUEyQjtRQUMzQixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDZCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLEVBQUUsS0FBSzthQUNmLENBQUMsQ0FBQyxDQUFBO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNkLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUM3QyxJQUFJLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzRCxPQUFPLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDM0QsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLElBQUksQ0FBQztnQkFDMUMsWUFBWSxFQUFFLDRCQUE0QjtnQkFDMUMsY0FBYyxFQUFFLDhCQUE4QjthQUMvQyxDQUFDLENBQUE7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtZQUN4RyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxFQUFFLFFBQVEsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEYsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFBO0lBQ1gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2YsTUFBTSxFQUFFO1FBQ04sS0FBSztRQUNMLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSTtRQUNKLElBQUk7UUFDSixPQUFPO1FBQ1AsSUFBSTtRQUNKLElBQUk7UUFDSixLQUFLO1FBQ0wsT0FBTztRQUNQLEdBQUc7UUFDSCxLQUFLO1FBQ0wsTUFBTTtRQUNOLE1BQU07UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLE1BQU07UUFDTixRQUFRO1FBQ1IsT0FBTztRQUNQLEtBQUs7UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLFFBQVE7UUFDUixJQUFJO1FBQ0osT0FBTztLQUNSO0lBQ0QsVUFBVTtJQUNWLE1BQU07SUFDTixVQUFVO0lBQ1YsWUFBWTtJQUNaLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixhQUFhO0lBQ2IsV0FBVztJQUNYLG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsUUFBUTtJQUNSLHNCQUFzQjtJQUN0QixTQUFTO0lBQ1QsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osV0FBVztJQUNYLGNBQWM7SUFDZCxNQUFNO0lBQ04sUUFBUTtJQUNSLGVBQWU7SUFDZixXQUFXO0lBQ1gsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQiw4QkFBOEI7SUFDOUIsNEJBQTRCO0lBQzVCLHVCQUF1QjtJQUN2QixpQkFBaUI7SUFDakIsVUFBVTtJQUNWLDJCQUEyQjtJQUMzQixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGNBQWM7Q0FDZixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBleGVjIH0gPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKVxyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpXHJcbmNvbnN0IG5ldCA9IHJlcXVpcmUoXCJuZXRcIilcclxuY29uc3Qgb3MgPSByZXF1aXJlKFwib3NcIilcclxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKFwicmVhZGxpbmVcIilcclxuXHJcbmNvbnN0IGNvbG9yc3RyaXAgPSAoc3RyKSA9PiBzdHIucmVwbGFjZShcclxuICAvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiXHJcbilcclxuXHJcbmNvbnN0IGNvbW1hcyA9IChudW1iZXIpID0+IHtcclxuICBjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKVxyXG4gIGNvbnN0IHJlc3VsdCA9IHBhcnRzLmxlbmd0aCA8PSAxXHJcbiAgICA/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXHJcbiAgICA6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0ZpeGVkVHJ1bmMgKHgsIG4pIHtcclxuICBjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpXHJcbiAgaWYgKG4gPD0gMCkgcmV0dXJuIHZbMF1cclxuICBsZXQgZiA9IHZbMV0gfHwgXCJcIlxyXG4gIGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWBcclxuICB3aGlsZSAoZi5sZW5ndGggPCBuKSBmICs9IFwiMFwiXHJcbiAgcmV0dXJuIGAke3ZbMF19LiR7Zn1gXHJcbn07XHJcblxyXG5jb25zdCB3aG9sZV93aXRzID0gKG51bWJlciwgZGlnaXRzKSA9PiB7XHJcbiAgY29uc3QgbG9va3VwID0gW1xyXG4gICAgeyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDZuLCBzeW1ib2w6IFwibVdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxyXG4gICAgeyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcclxuICAgIHsgdmFsdWU6IDEwbiAqKiAxNW4sIHN5bWJvbDogXCJNV2l0c1wiIH0sXHJcbiAgXVxyXG4gIC8vIGNvbnN0IHJlZ2V4cCA9IC9cXC4wKyR8KD88PVxcLlswLTldKTArJC9cclxuICBjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KGl0ZW0gPT4gbnVtYmVyID49IGl0ZW0udmFsdWUpXHJcbiAgY29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKVxyXG4gIGNvbnN0IGRlY2ltYWxzID0gaXRlbSA/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSkudG9TdHJpbmcoKS5zbGljZSgxKSA6IFwiXCJcclxuICByZXR1cm4gaXRlbSA/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWAgOiBcIihubyBjb2lucylcIlxyXG59XHJcblxyXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWBcclxuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYmdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMwOzQybSR7c3RyfVxceDFiWzA7MG1gXHJcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWBcclxuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYFxyXG5cclxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbMTs5MG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IGx5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMTs5M20ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBtZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbOTJtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IG15ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbOTNtJHtzdHJ9XFx4MWJbMG1gXHJcblxyXG5jb25zdCBibHVlID0gKHN0cikgPT4gYFxceDFiWzM0bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMm0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYFxyXG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gXHJcbmNvbnN0IHJlZCA9IChzdHIpID0+IGBcXHgxYlszMW0ke3N0cn1cXHgxYlswbWBcclxuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWBcclxuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYFxyXG5cclxuZnVuY3Rpb24gY291bnRMZWF2ZXMgKHQsIG9iaikge1xyXG4gIGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwXHJcbiAgaWYgKG9iaiBpbnN0YW5jZW9mIHQpIHJldHVybiAxXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApXHJcbiAgZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMClcclxufVxyXG5cclxuZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyAoYXJncykge1xyXG4gIHJldHVybiBhcmdzLmZpbHRlcihhcmcgPT4gIWFyZy5zdGFydHNXaXRoKFwiLS1cIikpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNtZCAoLi4uY29tbWFuZCkge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBleGVjKGNvbW1hbmQuam9pbihcIiBcIiksIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59O1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUgKGJ5dGVjb2RlLCAuLi5mbGFncykge1xyXG4gIGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XHJcbiAgICB0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIilcclxuICB9IGVsc2Uge1xyXG4gICAgY29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIlxyXG4gICAgcmV0dXJuIGNtZChucHgsIFwid2l0bmV0XCIsIFwicmFkb25cIiwgXCJkcnlydW5cIiwgYnl0ZWNvZGUsIC4uLmZsYWdzKVxyXG4gICAgLy8gLmNhdGNoKChlcnIpID0+IHtcclxuICAgIC8vICAgICBsZXQgZXJyb3JNZXNzYWdlID0gZXJyLm1lc3NhZ2Uuc3BsaXQoJ1xcbicpLnNsaWNlKDEpLmpvaW4oJ1xcbicpLnRyaW0oKVxyXG4gICAgLy8gICAgIGNvbnN0IGVycm9yUmVnZXggPSAvLipeZXJyb3I6ICg/PG1lc3NhZ2U+LiopJC4qL2dtXHJcbiAgICAvLyAgICAgY29uc3QgbWF0Y2hlZCA9IGVycm9yUmVnZXguZXhlYyhlcnIubWVzc2FnZSlcclxuICAgIC8vICAgICBpZiAobWF0Y2hlZCkge1xyXG4gICAgLy8gICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXRjaGVkLmdyb3Vwcy5tZXNzYWdlXHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKGVycm9yTWVzc2FnZSB8fCBlcnIpXHJcbiAgICAvLyAgICAgY29uc29sZS5lcnJvcihlcnJvck1lc3NhZ2UgfHwgZXJyKVxyXG4gICAgLy8gfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RGcm9tQXJncyAoYXJncywgZmxhZ3MpIHtcclxuICBjb25zdCBjdXJhdGVkID0ge31cclxuICBpZiAoYXJncyAmJiBmbGFncykge1xyXG4gICAgT2JqZWN0LmtleXMoZmxhZ3MpLmZvckVhY2goZmxhZyA9PiB7XHJcbiAgICAgIGNvbnN0IGZsYWdJbmRleCA9IGFyZ3MuaW5kZXhPZihgLS0ke2ZsYWd9YClcclxuICAgICAgaWYgKGZsYWdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgaWYgKGZsYWdzW2ZsYWddLnBhcmFtKSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdXHJcbiAgICAgICAgICBpZiAoIWFyZ3NbZmxhZ0luZGV4ICsgMV0gfHwgYXJnc1tmbGFnSW5kZXggKyAxXS5zdGFydHNXaXRoKFwiLS1cIikpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV1cclxuICAgICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAyKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjdXJhdGVkW2ZsYWddID0gdHJ1ZVxyXG4gICAgICAgICAgYXJncy5zcGxpY2UoZmxhZ0luZGV4LCAxKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIFthcmdzLCBjdXJhdGVkXVxyXG59XHJcblxyXG5mdW5jdGlvbiBmcm9tSGV4U3RyaW5nIChoZXhTdHJpbmcpIHtcclxuICBpZiAoaGV4U3RyaW5nLnN0YXJ0c1dpdGgoXCIweFwiKSkgaGV4U3RyaW5nID0gaGV4U3RyaW5nLnNsaWNlKDIpXHJcbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShoZXhTdHJpbmcubWF0Y2goLy57MSwyfS9nKS5tYXAoKGJ5dGUpID0+IHBhcnNlSW50KGJ5dGUsIDE2KSkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QgKGlwKSB7XHJcbiAgaWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHsgaXAgPSBpcC5zdWJzdHJpbmcoNykgfVxyXG5cclxuICBpZiAobmV0LmlzSVB2NChpcCkpIHtcclxuICAgIC8vIGNoZWNrIGxvY2FsaG9zdFxyXG4gICAgaWYgKGlwID09PSBcIjEyNy4wLjAuMVwiKSB7IHJldHVybiB0cnVlIH1cclxuXHJcbiAgICAvLyAgICAgICAgIDEwLjAuMC4wIC0gMTAuMjU1LjI1NS4yNTUgICAgICAgIHx8ICAgMTcyLjE2LjAuMCAtIDE3Mi4zMS4yNTUuMjU1ICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAxOTIuMTY4LjAuMCAtIDE5Mi4xNjguMjU1LjI1NVxyXG4gICAgcmV0dXJuIC9eKDEwKVxcLiguKilcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApIHx8IC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fCAvXigxOTIpXFwuKDE2OClcXC4oLiopXFwuKC4qKSQvLnRlc3QoaXApXHJcbiAgfVxyXG5cclxuICAvLyBlbHNlOiBpcCBpcyBJUHY2XHJcbiAgY29uc3QgZmlyc3RXb3JkID0gaXAuc3BsaXQoXCI6XCIpLmZpbmQoZWwgPT4gISFlbCkgLy8gZ2V0IGZpcnN0IG5vdCBlbXB0eSB3b3JkXHJcblxyXG4gIC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcclxuICBpZiAoaXAgPT09IFwiOjoxXCIpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIFRoZSBvcmlnaW5hbCBJUHY2IFNpdGUgTG9jYWwgYWRkcmVzc2VzIChmZWMwOjovMTApIGFyZSBkZXByZWNhdGVkLiBSYW5nZTogZmVjMCAtIGZlZmZcclxuICBlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gVGhlc2UgZGF5cyBVbmlxdWUgTG9jYWwgQWRkcmVzc2VzIChVTEEpIGFyZSB1c2VkIGluIHBsYWNlIG9mIFNpdGUgTG9jYWwuXHJcbiAgLy8gUmFuZ2U6IGZjMDAgLSBmY2ZmXHJcbiAgZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBSYW5nZTogZmQwMCAtIGZjZmZcclxuICBlbHNlIGlmICgvXmZkWzAtZl17Mn0kLy50ZXN0KGZpcnN0V29yZCkpIHJldHVybiB0cnVlXHJcblxyXG4gIC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcclxuICBlbHNlIGlmIChmaXJzdFdvcmQgPT09IFwiZmU4MFwiKSByZXR1cm4gdHJ1ZVxyXG5cclxuICAvLyBEaXNjYXJkIFByZWZpeFxyXG4gIGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWVcclxuXHJcbiAgLy8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGggKHN0ciwgbGVuZ3RoKSB7XHJcbiAgcmV0dXJuIChpc0hleFN0cmluZyhzdHIpICYmXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHxcclxuICAgICAgICAgICAgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMlxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0hleFN0cmluZyAoc3RyKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiBzdHIgPT09IFwic3RyaW5nXCIgJiZcclxuICAgICAgICAoXHJcbiAgICAgICAgICAoc3RyLnN0YXJ0c1dpdGgoXCIweFwiKSAmJiAvXlthLWZBLUYwLTldKyQvaS50ZXN0KHN0ci5zbGljZSgyKSkpIHx8XHJcbiAgICAgICAgICAgIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyKVxyXG4gICAgICAgIClcclxuICApIHx8IGlzV2lsZGNhcmQoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b0hleFN0cmluZyAoYnVmZmVyLCBwcmVmaXgweCA9IGZhbHNlKSB7XHJcbiAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcclxuICByZXR1cm4gKHByZWZpeDB4ID8gXCIweFwiIDogXCJcIikgKyBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYnVmZmVyLCB4ID0+IChcIjAwXCIgKyB4LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKVxyXG4gICAgLmpvaW4oXCJcIilcclxuICAgIC5tYXRjaCgvW2EtZkEtRjAtOV17Mn0vZylcclxuICAgIC5qb2luKFwiXCIpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlVVJMICh1cmwpIHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICBwYXJzZWRVcmwucHJvdG9jb2wgKyBcIi8vXCIsXHJcbiAgICAgIHBhcnNlZFVybC5ob3N0LFxyXG4gICAgICBwYXJzZWRVcmwucGF0aG5hbWUuc2xpY2UoMSksXHJcbiAgICAgIHBhcnNlZFVybC5zZWFyY2guc2xpY2UoMSksXHJcbiAgICBdXHJcbiAgfSBjYXRjaCB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIFVSTCB3YXMgcHJvdmlkZWQ6ICR7dXJsfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2UgKGNtZCwgbW9kdWxlKSB7XHJcbiAgc2hvd1VzYWdlSGVhZGxpbmUoY21kKVxyXG4gIHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pXHJcbiAgc2hvd1VzYWdlUm91dGVyKHsgLi4ubW9kdWxlPy5yb3V0ZXIgfSlcclxuICBzaG93VXNhZ2VFbnZhcnMoeyAuLi5tb2R1bGU/LmVudmFycyB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIgKHJvdXRlcikge1xyXG4gIGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpXHJcbiAgaWYgKGNtZHMubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBNYXRoLm1heCguLi5jbWRzLm1hcCgoW2NtZF0pID0+IGNtZC5sZW5ndGgpKVxyXG4gICAgY21kcy5mb3JFYWNoKGNtZCA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke2NtZFswXX0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjbWRbMF0ubGVuZ3RoKX1gLCBcIiAgXCIsIGNtZFsxXS5oaW50KVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUVycm9yIChjbWQsIHN1YmNtZCwgbW9kdWxlLCBlcnJvciwgZmxhZ3MpIHtcclxuICBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKVxyXG4gIGlmIChlcnJvcikge1xyXG4gICAgY29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpXHJcbiAgICBpZiAoZmxhZ3M/LmRlYnVnKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yPy5zdGFjaz8uc3BsaXQoXCJcXG5cIilbMF0gfHwgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VFbnZhcnMgKGVudmFycykge1xyXG4gIGlmIChlbnZhcnMpIHtcclxuICAgIGVudmFycyA9IE9iamVjdC5lbnRyaWVzKGVudmFycylcclxuICAgIGlmIChlbnZhcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5FTlZBUlM6XCIpXHJcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gTWF0aC5tYXgoLi4uZW52YXJzLm1hcCgoW2VudmFyXSkgPT4gZW52YXIubGVuZ3RoKSlcclxuICAgICAgZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcclxuICAgICAgICBpZiAoZW52YXIudG9VcHBlckNhc2UoKS5pbmRleE9mKFwiS0VZXCIpIDwgMCAmJiBwcm9jZXNzLmVudltlbnZhcl0pIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAke3llbGxvdyhlbnZhci50b1VwcGVyQ2FzZSgpKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGVudmFyLmxlbmd0aCl9YCwgYCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgJHt5ZWxsb3coZW52YXIudG9VcHBlckNhc2UoKSl9JHtcIiBcIi5yZXBlYXQobWF4V2lkdGggLSBlbnZhci5sZW5ndGgpfWAsIGAgJHtoaW50fWApXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlRmxhZ3MgKGZsYWdzKSB7XHJcbiAgaWYgKGZsYWdzKSB7XHJcbiAgICBmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKS5maWx0ZXIoKFssIGZsYWddKSA9PiAhZmxhZz8ucGFyYW0pLnNvcnQoKFthXSwgW2JdKSA9PiB7XHJcbiAgICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICAgIGVsc2UgaWYgKGEgPiBiKSByZXR1cm4gMVxyXG4gICAgICBlbHNlIHJldHVybiAwXHJcbiAgICB9KVxyXG4gICAgaWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc29sZS5pbmZvKFwiXFxuRkxBR1M6XCIpXHJcbiAgICAgIGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmZsYWdzLmZpbHRlcigoWywgeyBoaW50IH1dKSA9PiBoaW50KS5tYXAoKFtrZXksIHsgcGFyYW0gfV0pID0+IHBhcmFtID8ga2V5Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCArIDMgOiBrZXkubGVuZ3RoKSlcclxuICAgICAgZmxhZ3MuZm9yRWFjaChmbGFnID0+IHtcclxuICAgICAgICBjb25zdCBzdHIgPSBgJHtmbGFnWzBdfSR7ZmxhZ1sxXS5wYXJhbSA/IGdyYXkoYCA8JHtmbGFnWzFdLnBhcmFtfT5gKSA6IFwiXCJ9YFxyXG4gICAgICAgIGlmIChmbGFnWzFdLmhpbnQpIHtcclxuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgZmxhZ1sxXS5oaW50KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lIChjbWQsIHN1YmNtZCwgbW9kdWxlKSB7XHJcbiAgY29uc29sZS5pbmZvKFwiVVNBR0U6XCIpXHJcbiAgaWYgKHN1YmNtZCkge1xyXG4gICAgbGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zXHJcbiAgICAvLyBjb25zdCBvcHRpb25zID0gbW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbmFsaXplID0gKHN0cikgPT4gc3RyLmVuZHNXaXRoKFwiIC4uLl1cIilcclxuICAgICAgICA/IGBbPCR7c3RyLnNsaWNlKDEsIC01KX0+IC4uLl1gXHJcbiAgICAgICAgOiAoXHJcbiAgICAgICAgICBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmBcclxuICAgICAgICApXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMubWFwKHBhcmFtID0+IG9wdGlvbmFsaXplKHBhcmFtKSkuam9pbihcIiBcIikgKyBcIiBcIlxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IG9wdGlvbmFsaXplKHBhcmFtcylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5pbmZvKGAgICAke3doaXRlKGBucHggd2l0bmV0ICR7Y21kfWApfSAke3doaXRlKHN1YmNtZCl9ICR7cGFyYW1zID8gZ3JlZW4ocGFyYW1zKSArIFwiIFwiIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgICBpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xyXG4gICAgICBjb25zb2xlLmluZm8oXCJcXG5ERVNDUklQVElPTjpcIilcclxuICAgICAgY29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApXHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgICAgJHt3aGl0ZShgbnB4IHdpdG5ldCAke2NtZH1gKX0gPFNVQkNPTU1BTkQ+IC4uLiBbT1BUSU9OU10gW0ZMQUdTXWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VXNhZ2VPcHRpb25zIChvcHRpb25zKSB7XHJcbiAgb3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLmZpbHRlcigoWywgb3B0aW9uXSkgPT4gb3B0aW9uPy5wYXJhbSkuc29ydCgoW2FdLCBbYl0pID0+IHtcclxuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xXHJcbiAgICBlbHNlIGlmIChhID4gYikgcmV0dXJuIDFcclxuICAgIGVsc2UgcmV0dXJuIDBcclxuICB9KVxyXG4gIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgIGNvbnNvbGUuaW5mbyhcIlxcbk9QVElPTlM6XCIpXHJcbiAgICBjb25zdCBtYXhMZW5ndGggPSBvcHRpb25zXHJcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvblsxXS5wYXJhbSA/IG9wdGlvblsxXS5wYXJhbS5sZW5ndGggKyBvcHRpb25bMF0ubGVuZ3RoICsgMyA6IG9wdGlvblswXS5sZW5ndGgpXHJcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IGN1cnIgPiBwcmV2ID8gY3VyciA6IHByZXYpXHJcbiAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgaWYgKG9wdGlvblsxXS5oaW50KSB7XHJcbiAgICAgICAgY29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWBcclxuICAgICAgICBjb25zb2xlLmluZm8oXCIgIFwiLCBgLS0ke3N0cn0ke1wiIFwiLnJlcGVhdChtYXhMZW5ndGggLSBjb2xvcnN0cmlwKHN0cikubGVuZ3RoKX1gLCBcIiAgXCIsIG9wdGlvblsxXS5oaW50KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gc2hvd1VzYWdlU3ViY29tbWFuZCAoY21kLCBzdWJjbWQsIG1vZHVsZSkge1xyXG4gIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpXHJcbiAgc2hvd1VzYWdlT3B0aW9ucyh7IC4uLm1vZHVsZT8uZmxhZ3MsIC4uLm1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ub3B0aW9ucyB9KVxyXG4gIHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pXHJcbiAgc2hvd1VzYWdlRW52YXJzKG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8uZW52YXJzIHx8IG1vZHVsZT8uZW52YXJzKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG93VmVyc2lvbiAoKSB7XHJcbiAgY29uc29sZS5pbmZvKGAke21jeWFuKGBXaXRuZXQgU0RLIHYke3JlcXVpcmUoXCIuLi8uLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbn1gKX1gKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcgKHN0cikge1xyXG4gIGxldCBtYXhBcmdzSW5kZXggPSAwXHJcbiAgaWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykge1xyXG4gICAgbGV0IG1hdGNoXHJcbiAgICBjb25zdCByZWdleHAgPSAvXFxcXFxcZFxcXFwvZ1xyXG4gICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cikpICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGFyZ3NJbmRleCA9IHBhcnNlSW50KG1hdGNoWzBdWzFdKSArIDFcclxuICAgICAgaWYgKGFyZ3NJbmRleCA+IG1heEFyZ3NJbmRleCkgbWF4QXJnc0luZGV4ID0gYXJnc0luZGV4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBtYXhBcmdzSW5kZXhcclxufVxyXG5cclxuZnVuY3Rpb24gY2hlY2tScGNXaWxkY2FyZHMgKHdpbGRjYXJkcykge1xyXG4gIGlmICh0eXBlb2Ygd2lsZGNhcmRzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCh3aWxkY2FyZCA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSkgd2lsZGNhcmQuZm9yRWFjaChpdGVtID0+IGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pKVxyXG4gICAgICBlbHNlIGNoZWNrUnBjV2lsZGNhcmRzKHdpbGRjYXJkKVxyXG4gICAgfSlcclxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xyXG4gICAgd2lsZGNhcmRzLmZvckVhY2god2lsZGNhcmQgPT4gY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpKVxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbGRjYXJkcyA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgaWYgKGlzV2lsZGNhcmQod2lsZGNhcmRzKSkge1xyXG4gICAgICBjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKVxyXG4gICAgICBpZiAoY2hhciA8IFwiMVwiIHx8IGNoYXIgPiBcIjlcIikge1xyXG4gICAgICAgIHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFsxIC4uIDldXCIpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzV2lsZGNhcmQgKHN0cikge1xyXG4gIHJldHVybiBzdHIubGVuZ3RoID09PSAzICYmIC9cXFxcXFxkXFxcXC9nLnRlc3Qoc3RyKVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXBsYWNlV2lsZGNhcmRzIChvYmosIGFyZ3MpIHtcclxuICBpZiAoYXJncy5sZW5ndGggPiAxMCkgYXJncyA9IGFyZ3Muc2xpY2UoMCwgMTApXHJcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICBmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcclxuICAgICAgY29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGBcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwod2lsZGNhcmQsIGFyZ3NbYXJnSW5kZXhdKVxyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAob2JqICYmIEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgb2JqID0gb2JqLm1hcCh2YWx1ZSA9PiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSlcclxuICAgICAgPyByZXBsYWNlV2lsZGNhcmRzKHZhbHVlLCBhcmdzKVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQgKG9iaiwgYXJnSW5kZXgsIGFyZ1ZhbHVlLCBhcmdzQ291bnQpIHtcclxuICBpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcclxuICAgIGNvbnN0IHdpbGRjYXJkID0gYFxcXFwke2FyZ0luZGV4fVxcXFxgXHJcbiAgICBvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpXHJcbiAgICBmb3IgKGxldCBqID0gYXJnSW5kZXggKyAxOyBqIDwgYXJnc0NvdW50OyBqKyspIHtcclxuICAgICAgb2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYClcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgIG9iaiA9IG9iai5tYXAodmFsdWUgPT4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpXHJcbiAgICAgID8gc3BsaWNlV2lsZGNhcmQodmFsdWUsIGFyZ0luZGV4LCBhcmdWYWx1ZSwgYXJnc0NvdW50KVxyXG4gICAgICA6IHZhbHVlXHJcbiAgICApXHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdG9vbGtpdFJ1biAoc2V0dGluZ3MsIGFyZ3MpIHtcclxuICBjb25zdCBjbWQgPSBgJHtzZXR0aW5ncy5wYXRocy50b29sa2l0QmluUGF0aH0gJHthcmdzLmpvaW4oXCIgXCIpfWBcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgZXhlYyhjbWQsIHsgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChzdGRlcnIpIHtcclxuICAgICAgICByZWplY3Qoc3RkZXJyKVxyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoc3Rkb3V0KVxyXG4gICAgfSlcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlIChzdHIpIHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcYihcXHcpL2csIGZ1bmN0aW9uIChtYXRjaCwgY2FwdHVyZSkge1xyXG4gICAgcmV0dXJuIGNhcHR1cmUudG9VcHBlckNhc2UoKVxyXG4gIH0pLnJlcGxhY2UoL1xccysvZywgXCJcIilcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGYxNkJ5dGVzKHN0cikge1xyXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCAqIDIpO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcbiAgICBieXRlc1tpICogMl0gPSBjb2RlID4+IDg7XHJcbiAgICBieXRlc1tpICogMiArIDFdID0gY29kZSAmIDB4ZmY7XHJcbiAgfVxyXG4gIHJldHVybiBieXRlcztcclxufVxyXG5cclxuZnVuY3Rpb24gdG9VdGY4QXJyYXkgKHN0cikge1xyXG4gIGNvbnN0IHV0ZjggPSBbXVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKVxyXG4gICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKVxyXG4gICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhjMCB8IChjaGFyY29kZSA+PiA2KSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgaWYgKGNoYXJjb2RlIDwgMHhkODAwIHx8IGNoYXJjb2RlID49IDB4ZTAwMCkge1xyXG4gICAgICB1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksXHJcbiAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpXHJcbiAgICB9IGVsc2UgeyAvLyBzdXJyb2dhdGUgcGFpclxyXG4gICAgICBpKytcclxuICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxyXG4gICAgICAvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXHJcbiAgICAgIC8vIDIwIGJpdHMgb2YgMHgwLTB4RkZGRkYgaW50byB0d28gaGFsdmVzXHJcbiAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpIDw8IDEwKSB8XHJcbiAgICAgICAgICAgICAgICAoc3RyLmNoYXJDb2RlQXQoaSkgJiAweDNmZikpXHJcbiAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+IDE4KSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiAxMikgJiAweDNmKSxcclxuICAgICAgICAweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxyXG4gICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSlcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHV0ZjhcclxufVxyXG5cclxuZnVuY3Rpb24gdXRmOEFycmF5VG9TdHIgKGFycmF5KSB7XHJcbiAgY29uc3QgbGVuID0gYXJyYXkubGVuZ3RoXHJcbiAgbGV0IG91dCA9IFwiXCI7IGxldCBpID0gMDsgbGV0IGNcclxuICBsZXQgY2hhcjIsIGNoYXIzXHJcbiAgd2hpbGUgKGkgPCBsZW4pIHtcclxuICAgIGMgPSBhcnJheVtpKytdXHJcbiAgICBzd2l0Y2ggKGMgPj4gNCkge1xyXG4gICAgICBjYXNlIDA6IGNhc2UgMTogY2FzZSAyOiBjYXNlIDM6IGNhc2UgNDogY2FzZSA1OiBjYXNlIDY6IGNhc2UgNzpcclxuICAgICAgICAvLyAweHh4eHh4eFxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgY2FzZSAxMjogY2FzZSAxMzpcclxuICAgICAgICAvLyAxMTB4IHh4eHggICAxMHh4IHh4eHhcclxuICAgICAgICBjaGFyMiA9IGFycmF5W2krK11cclxuICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDFGKSA8PCA2KSB8IChjaGFyMiAmIDB4M0YpKVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgLy8gMTExMCB4eHh4ICAxMHh4IHh4eHggIDEweHggeHh4eFxyXG4gICAgICAgIGNoYXIyID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIGNoYXIzID0gYXJyYXlbaSsrXVxyXG4gICAgICAgIG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MEYpIDw8IDEyKSB8XHJcbiAgICAgICAgICAgICAgICAgICAgKChjaGFyMiAmIDB4M0YpIDw8IDYpIHxcclxuICAgICAgICAgICAgICAgICAgICAoKGNoYXIzICYgMHgzRikgPDwgMCkpXHJcbiAgICAgICAgYnJlYWtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG91dFxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQgKHF1ZXN0aW9uKSB7XHJcbiAgY29uc3QgcmVhZGxpbmVJbnRlcmZhY2UgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xyXG4gICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXHJcbiAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxyXG4gIH0pXHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIHJlYWRsaW5lSW50ZXJmYWNlLnF1ZXN0aW9uKGAke3F1ZXN0aW9ufSBgLCAocmVzcG9uc2UpID0+IHtcclxuICAgICAgcmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKVxyXG4gICAgICByZXNvbHZlKHJlc3BvbnNlLnRyaW0oKSlcclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gcHJvbXB0ZXIgKHByb21pc2UpIHtcclxuICBjb25zdCBsb2FkaW5nID0gKCgpID0+IHtcclxuICAgIGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdXHJcbiAgICBsZXQgaSA9IDBcclxuICAgIHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGkgPSAoaSA+IDMpID8gMCA6IGlcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFxcYlxcYiR7aFtpXX0gYClcclxuICAgICAgaSsrXHJcbiAgICB9LCA1MClcclxuICB9KSgpXHJcbiAgcmV0dXJuIHByb21pc2VcclxuICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwobG9hZGluZylcclxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIilcclxuICAgICAgcmV0dXJuIHJlc3VsdFxyXG4gICAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VDaGVja2xpc3RzIChjaGVja2xpc3RzKSB7XHJcbiAgaWYgKGNoZWNrbGlzdHMgJiYgT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubGVuZ3RoID4gMCkge1xyXG4gICAgY29uc3QgaGVhZGxpbmVzID0gW1wiTk9ERVNcIiwgLi4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKGtleSA9PiBgOiR7a2V5fWApXVxyXG4gICAgY2hlY2tsaXN0cyA9IE9iamVjdC52YWx1ZXMoY2hlY2tsaXN0cylcclxuICAgIGNvbnN0IHVybHMgPSBPYmplY3Qua2V5cyhjaGVja2xpc3RzWzBdKVxyXG4gICAgY29uc3QgcmVjb3JkcyA9IHVybHMubWFwKHVybCA9PiB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yKS5sZW5ndGhcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBlcnJvcnMgPT09IGNoZWNrbGlzdHMubGVuZ3RoID8gcmVkKHVybCkgOiAoZXJyb3JzID4gMCA/IG15ZWxsb3codXJsKSA6IG1jeWFuKHVybCkpLFxyXG4gICAgICAgIC4uLmNoZWNrbGlzdHMubWFwKGNoZWNrbGlzdCA9PiBjaGVja2xpc3RbdXJsXSBpbnN0YW5jZW9mIEVycm9yXHJcbiAgICAgICAgICA/IHJlZChjaGVja2xpc3RbdXJsXSlcclxuICAgICAgICAgIDogKGNoZWNrbGlzdFt1cmxdID09PSB0cnVlID8gbGN5YW4oXCJBeWVcIikgOiBjeWFuKFwiTmF5XCIpKVxyXG4gICAgICAgICksXHJcbiAgICAgIF1cclxuICAgIH0pXHJcbiAgICB0cmFjZVRhYmxlKHJlY29yZHMsIHtcclxuICAgICAgaGVhZGxpbmVzLFxyXG4gICAgICBtYXhDb2x1bW5XaWR0aDogMzEsXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHJhY2VIZWFkZXIgKGhlYWRsaW5lLCBjb2xvciA9IG5vcm1hbCwgaW5kZW50ID0gXCJcIiwpIHtcclxuICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJBgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSCICR7Y29sb3IoaGVhZGxpbmUpfSDilIJgKVxyXG4gIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUmGApXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVGFibGUgKHJlY29yZHMsIG9wdGlvbnMpIHtcclxuICBjb25zdCBzdHJpbmdpZnkgPSAoZGF0YSwgaHVtYW5pemVycywgaW5kZXgpID0+IGh1bWFuaXplcnMgJiYgaHVtYW5pemVyc1tpbmRleF0gPyBodW1hbml6ZXJzW2luZGV4XShkYXRhKS50b1N0cmluZygpIDogZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiXHJcbiAgY29uc3QgbWF4ID0gKGEsIGIpID0+IGEgPiBiID8gYSA6IGJcclxuICBjb25zdCByZWR1Y2VNYXggPSAobnVtYmVycykgPT4gbnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IHByZXYgPiBjdXJyID8gcHJldiA6IGN1cnIsIDApXHJcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge31cclxuICBjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIlxyXG4gIGNvbnN0IG51bUNvbHVtbnMgPSByZWR1Y2VNYXgocmVjb3Jkcy5tYXAocmVjb3JkID0+IHJlY29yZD8ubGVuZ3RoIHx8IDEpKVxyXG4gIGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODBcclxuICBjb25zdCB0YWJsZSA9IHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKVxyXG4gIG9wdGlvbnMud2lkdGhzID0gb3B0aW9ucz8ud2lkdGhzIHx8IHRhYmxlLm1hcCgoY29sdW1uLCBpbmRleCkgPT4ge1xyXG4gICAgbGV0IG1heFdpZHRoID0gcmVkdWNlTWF4KGNvbHVtbi5tYXAoZmllbGQgPT4gY29sb3JzdHJpcChzdHJpbmdpZnkoZmllbGQsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGluZGV4KSkubGVuZ3RoKSlcclxuICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdKSB7XHJcbiAgICAgIG1heFdpZHRoID0gbWF4KG1heFdpZHRoLCBjb2xvcnN0cmlwKG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKSkubGVuZ3RoKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIE1hdGgubWluKG1heFdpZHRoLCBtYXhDb2x1bW5XaWR0aClcclxuICB9KVxyXG4gIGxldCBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilKzilIBcIil94pSA4pSQYClcclxuICBpZiAob3B0aW9ucz8uaGVhZGxpbmVzKSB7XHJcbiAgICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhcHRpb24gPSBvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIilcclxuICAgICAgY29uc3QgY2FwdGlvbkxlbmd0aCA9IGNvbG9yc3RyaXAoY2FwdGlvbikubGVuZ3RoXHJcbiAgICAgIHJldHVybiBgJHt3aGl0ZShjYXB0aW9uKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGNhcHRpb25MZW5ndGgpfWBcclxuICAgIH0pXHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2hlYWRsaW5lLmpvaW4oXCIg4pSCIFwiKX0g4pSCYClcclxuICAgIGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKG1heFdpZHRoID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSlcclxuICAgIGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSc4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS84pSAXCIpfeKUgOKUpGApXHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGxpbmUgPSBcIlwiXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bUNvbHVtbnM7IGorKykge1xyXG4gICAgICBsZXQgZGF0YSA9IHRhYmxlW2pdW2ldXHJcbiAgICAgIGxldCBjb2xvclxyXG4gICAgICBpZiAob3B0aW9ucz8uY29sb3JzICYmIG9wdGlvbnMuY29sb3JzW2pdKSB7XHJcbiAgICAgICAgY29sb3IgPSBvcHRpb25zLmNvbG9yc1tqXVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbG9yID0gdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcclxuICAgICAgICAgID8gZ3JlZW5cclxuICAgICAgICAgIDogKE51bWJlcihkYXRhKSA9PT0gZGF0YSAmJiBkYXRhICUgMSAhPT0gMCAvLyBpcyBmbG9hdCBudW1iZXI/XHJcbiAgICAgICAgICAgID8geWVsbG93XHJcbiAgICAgICAgICAgIDogKHgpID0+IHhcclxuICAgICAgICAgIClcclxuICAgICAgfVxyXG4gICAgICBkYXRhID0gc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGopXHJcbiAgICAgIGlmIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoKSB7XHJcbiAgICAgICAgd2hpbGUgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGggLSAzKSB7XHJcbiAgICAgICAgICBkYXRhID0gZGF0YS5zbGljZSgwLCAtMSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YSArPSBcIi4uLlwiXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF0YUxlbmd0aCA9IGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoXHJcbiAgICAgIGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbal1bMF0gPT09IFwiOlwiKSB7XHJcbiAgICAgICAgZGF0YSA9IGAke2NvbG9yKGRhdGEpfSR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9YFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGEgPSBgJHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX0ke2NvbG9yKGRhdGEpfWBcclxuICAgICAgfVxyXG4gICAgICBsaW5lICs9IGDilIIgJHtkYXRhfSBgXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCR7aW5kZW50fSR7bGluZX3ilIJgKVxyXG4gIH1cclxuICBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcChtYXhXaWR0aCA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpXHJcbiAgY29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLTilIBcIil94pSA4pSYYClcclxufVxyXG5cclxuZnVuY3Rpb24gdHJhbnNwb3NlIChyZWNvcmRzLCBudW1Db2x1bW5zKSB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFtdXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvbHVtbnM7IGluZGV4KyspIHtcclxuICAgIGNvbHVtbnMucHVzaChyZWNvcmRzLm1hcChyb3cgPT4gcm93W2luZGV4XSkpXHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW5zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHR4SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlKSAvIDEwICoqIDlcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdHhSZWNlaXB0SnNvblJlcGxhY2VyIChrZXksIHZhbHVlKSB7XHJcbiAgc3dpdGNoIChrZXkpIHtcclxuICAgIGNhc2UgXCJieXRlc1wiOlxyXG4gICAgY2FzZSBcImRlclwiOlxyXG4gICAgICByZXR1cm4gdG9IZXhTdHJpbmcodmFsdWUsIHRydWUpXHJcbiAgICBjYXNlIFwidHhcIjpcclxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCB0eEpzb25SZXBsYWNlcilcclxuICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgIGNhc2UgXCJmZWVzXCI6XHJcbiAgICBjYXNlIFwidmFsdWVcIjpcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlPy5wZWRyb3MpIC8gMTAgKiogOVxyXG4gICAgY2FzZSBcInRpbWVzdGFtcFwiOlxyXG4gICAgICByZXR1cm4gbW9tZW50LnVuaXgodmFsdWUpLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gdmFsdWVcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQgKHJlY2VpcHQpIHtcclxuICBpZiAocmVjZWlwdD8uY29uZmlybWF0aW9ucykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBDaGVja3BvaW50ICMke2NvbW1hcyhyZWNlaXB0LmNvbmZpcm1hdGlvbnMpfS4uLmApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UgKHJlY2VpcHQpIHtcclxuICBjb25zdCBjYXB0aW9ucyA9IHtcclxuICAgIHBlbmRpbmc6IFwiQXdhaXRpbmcgcmVsYXkuLi5cIixcclxuICAgIC8vIGNvbmZpcm1lZDogXCJUcmFuc2FjdGlvbiBjb25maXJtZWQ6XCIsXHJcbiAgICAvLyBmaW5hbGl6ZWQ6IFwiVHJhbnNhY3Rpb24gZmluYWxpemVkOlwiLFxyXG4gICAgcmVsYXllZDogXCJBd2FpdGluZyBpbmNsdXNpb24uLi5cIixcclxuICAgIG1pbmVkOiBcIkF3YWl0aW5nIGNvbmZpcm1hdGlvbnMuLi5cIixcclxuICB9XHJcbiAgY29uc3QgY2FwdGlvbiA9IGNhcHRpb25zW3JlY2VpcHQuc3RhdHVzXVxyXG4gIGlmIChjYXB0aW9uKSBjb25zb2xlLmluZm8oYCA+ICR7Y2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdfWApXHJcbiAgaWYgKFtcImZpbmFsaXplZFwiLCBcImNvbmZpcm1lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykpIHtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgaGFzaDogICAke2dyYXkocmVjZWlwdD8uYmxvY2tIYXNoKX1gKVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBCbG9jayBtaW5lcjogICR7Y3lhbihyZWNlaXB0Py5ibG9ja01pbmVyKX1gKTtcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgZXBvY2g6ICAke3doaXRlKGNvbW1hcyhyZWNlaXB0Py5ibG9ja0Vwb2NoKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gSW5jbHVkZWQgYXQ6ICAke2dyZWVuKG1vbWVudC51bml4KHJlY2VpcHQ/LmJsb2NrVGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YClcclxuICAgIGNvbnNvbGUuaW5mbyhgID4gJHtyZWNlaXB0LnN0YXR1c1swXS50b1VwcGVyQ2FzZSgpICsgcmVjZWlwdC5zdGF0dXMuc2xpY2UoMSl9IGF0OiAke21ncmVlbihtb21lbnQudW5peChyZWNlaXB0LnRpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWApXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdCAocmVjZWlwdCkge1xyXG4gIGNvbnN0IGNhcHRpb25zID0ge1xyXG4gICAgRGF0YVJlcXVlc3Q6IFwiID4gRFJUIGhhc2g6ICAgICBcIixcclxuICAgIFZhbHVlVHJhbnNmZXI6IFwiID4gVlRUIGhhc2g6ICAgICBcIixcclxuICB9XHJcbiAgY29uc29sZS5pbmZvKGAke2NhcHRpb25zW3JlY2VpcHQudHlwZV0gfHwgXCIgPiBUWCBoYXNoOiAgICAgIFwifSR7d2hpdGUocmVjZWlwdC5oYXNoKX1gKVxyXG4gIGlmIChyZWNlaXB0Py5kcm9IYXNoKSBjb25zb2xlLmluZm8oYCA+IERSTyBoYXNoOiAgICAgJHtncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LnJhZEhhc2gpIGNvbnNvbGUuaW5mbyhgID4gUkFEIGhhc2g6ICAgICAke21ncmVlbihyZWNlaXB0LnJhZEhhc2gpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LmRyb1NMQSkgY29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApXHJcbiAgaWYgKHJlY2VpcHQ/LndpdGhkcmF3ZXIpIHtcclxuICAgIGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcclxuICAgICAgY29uc29sZS5pbmZvKGAgPiBWYWxpZGF0b3I6ICAgICR7bWN5YW4ocmVjZWlwdC52YWxpZGF0b3IpfWApXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdGhkcmF3ZXI6ICAgJHttbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApXHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXVxyXG4gICAgY29uc29sZS5pbmZvKGAgPiBTaWduZXIvczogICAgICR7bW1hZ2VudGEoc2lnbmVyc1swXSl9YClcclxuICAgIHNpZ25lcnMuc2xpY2UoMSkuZm9yRWFjaChzaWduZXIgPT4ge1xyXG4gICAgICBjb25zb2xlLmluZm8oYCAgICAgICAgICAgICAgICAgJHttbWFnZW50YShzaWduZXIpfWApXHJcbiAgICB9KVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8ucmVjaXBpZW50cykge1xyXG4gICAgY29uc29sZS5pbmZvKGAgPiBSZWNpcGllbnQvczogICR7XHJcbiAgICAgIG1ibHVlKHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKSlcclxuICAgIH1gKVxyXG4gIH1cclxuICBpZiAocmVjZWlwdD8uZmVlcykgY29uc29sZS5pbmZvKGAgPiBGZWU6ICAgICAgICAgICR7eWVsbG93KHJlY2VpcHQuZmVlcy50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8udmFsdWUpIGNvbnNvbGUuaW5mbyhgID4gVmFsdWU6ICAgICAgICAke215ZWxsb3cocmVjZWlwdC52YWx1ZS50b1N0cmluZygyKSl9YClcclxuICBpZiAocmVjZWlwdD8ud2VpZ2h0KSBjb25zb2xlLmluZm8oYCA+IFdlaWdodDogICAgICAgJHttZ3JlZW4oY29tbWFzKHJlY2VpcHQud2VpZ2h0KSl9YClcclxuICBpZiAocmVjZWlwdD8ud2l0bmVzc2VzKSB7XHJcbiAgICBjb25zb2xlLmluZm8oYCA+IFdpdG5lc3NlczogICAgJHtyZWNlaXB0LndpdG5lc3Nlc31gKVxyXG4gIH1cclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbiAodHJhbnNtaXR0ZXIsIG9wdGlvbnMpIHtcclxuICBjb25zdCBjb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8ICgoeCkgPT4gYFxceDFiWzMwOzQ1bSR7eH1cXHgxYlswbWApXHJcbiAgbGV0IHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zaWduVHJhbnNhY3Rpb24ob3B0aW9ucywgb3B0aW9ucz8ucmVsb2FkKVxyXG4gIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XHJcbiAgICBjb25zb2xlLmluZm8oXHJcbiAgICAgIGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gXHJcbiAgICApXHJcbiAgfVxyXG4gIGlmIChvcHRpb25zPy5oZWFkbGluZSkge1xyXG4gICAgY29uc29sZS5pbmZvKGBcXG4gJHtjb2xvcihgICAke29wdGlvbnMuaGVhZGxpbmV9ICBgKX1cXG5gKVxyXG4gIH1cclxuICB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KVxyXG4gIGlmICghb3B0aW9ucz8uZm9yY2UpIHtcclxuICAgIC8vIHByb21wdCB1c2VyIGNvbmZpcm1hdGlvblxyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlcXVpcmUoXCJpbnF1aXJlclwiKS5jcmVhdGVQcm9tcHRNb2R1bGUoKShbe1xyXG4gICAgICBtZXNzYWdlOiBcIlNlbmQgdHJhbnNhY3Rpb24/XCIsXHJcbiAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxyXG4gICAgICBuYW1lOiBcImNvbnRpbnVlXCIsXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4gICAgfV0pXHJcbiAgICBpZiAoIWFuc3dlci5jb250aW51ZSkge1xyXG4gICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgfVxyXG4gIH1cclxuICB0cnkge1xyXG4gICAgY29uc29sZS5pbmZvKClcclxuICAgIHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKVxyXG4gICAgaWYgKG9wdGlvbnM/LmF3YWl0IHx8IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xyXG4gICAgICAgIGNvbmZpcm1hdGlvbnM6IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICBvbkNoZWNrcG9pbnQ6IHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgICAgICAgb25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcclxuICAgICAgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB7IHN0YXR1czogcmVjZWlwdD8uc3RhdHVzLCB0aW1lc3RhbXA6IHJlY2VpcHQ/LnRpbWVzdGFtcCB8fCBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSB9XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhkYXRhKVxyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgaWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gKVxyXG4gICAgfVxyXG4gICAgdGhyb3cgZXJyXHJcbiAgfVxyXG4gIHJldHVybiByZWNlaXB0XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIGNvbG9yczoge1xyXG4gICAgYmJsdWUsXHJcbiAgICBiY3lhbixcclxuICAgIGJncmVlbixcclxuICAgIGJsdWUsXHJcbiAgICBicmVkLFxyXG4gICAgYnZpb2xldCxcclxuICAgIGN5YW4sXHJcbiAgICBncmF5LFxyXG4gICAgZ3JlZW4sXHJcbiAgICBtYWdlbnRhLFxyXG4gICAgcmVkLFxyXG4gICAgd2hpdGUsXHJcbiAgICB5ZWxsb3csXHJcbiAgICBub3JtYWwsXHJcbiAgICBsY3lhbixcclxuICAgIGxncmF5LFxyXG4gICAgbGdyZWVuLFxyXG4gICAgbG1hZ2VudGEsXHJcbiAgICBseWVsbG93LFxyXG4gICAgbWJsdWUsXHJcbiAgICBtY3lhbixcclxuICAgIG1ncmVlbixcclxuICAgIG1tYWdlbnRhLFxyXG4gICAgbXJlZCxcclxuICAgIG15ZWxsb3csXHJcbiAgfSxcclxuICBjb2xvcnN0cmlwLFxyXG4gIGNvbW1hcyxcclxuICB3aG9sZV93aXRzLFxyXG4gIHRvRml4ZWRUcnVuYyxcclxuICBjb3VudExlYXZlcyxcclxuICBleGVjUmFkb25CeXRlY29kZSxcclxuICBkZWxldGVFeHRyYUZsYWdzLFxyXG4gIGV4dHJhY3RGcm9tQXJncyxcclxuICBmcm9tSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nLFxyXG4gIGlzSGV4U3RyaW5nT2ZMZW5ndGgsXHJcbiAgdG9IZXhTdHJpbmcsXHJcbiAgcGFyc2VVUkwsXHJcbiAgaXBJc1ByaXZhdGVPckxvY2FsaG9zdCxcclxuICBzaG93VXNhZ2UsXHJcbiAgc2hvd1VzYWdlRXJyb3IsXHJcbiAgc2hvd1VzYWdlU3ViY29tbWFuZCxcclxuICBzaG93VmVyc2lvbixcclxuICB0b29sa2l0UnVuLFxyXG4gIHRvVXBwZXJDYW1lbENhc2UsXHJcbiAgdG9VdGYxNkJ5dGVzLFxyXG4gIHRvVXRmOEFycmF5LCAgXHJcbiAgdXRmOEFycmF5VG9TdHIsXHJcbiAgcHJvbXB0LFxyXG4gIHByb21wdGVyLFxyXG4gIHRyYWNlQ2hlY2tsaXN0cyxcclxuICB0cmFjZUhlYWRlcixcclxuICB0cmFjZVRhYmxlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb24sXHJcbiAgdHJhY2VUcmFuc2FjdGlvbk9uU3RhdHVzQ2hhbmdlLFxyXG4gIHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXHJcbiAgdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQsXHJcbiAgY2hlY2tScGNXaWxkY2FyZHMsXHJcbiAgaXNXaWxkY2FyZCxcclxuICBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcsXHJcbiAgcmVwbGFjZVdpbGRjYXJkcyxcclxuICBzcGxpY2VXaWxkY2FyZCxcclxuICB0eEpzb25SZXBsYWNlcixcclxufVxyXG4iXX0=
@@ -35,8 +35,15 @@ export interface ICoinbase extends ISigner {
35
35
  getWithdrawers(order?: QueryStakesOrder): Promise<Array<StakeEntry>>;
36
36
  }
37
37
  export interface ISigner extends ILedger {
38
+ authorizeEvmAddress(evmAddress: HexString): any;
38
39
  getStakeEntryNonce(validator: PublicKeyHashString): Promise<number>;
39
40
  signHash(hash: any): KeyedSignature;
41
+ signMessage(text: string): {
42
+ address: string;
43
+ message: string;
44
+ publicKey: HexString;
45
+ signature: HexString;
46
+ };
40
47
  }
41
48
  export interface IWallet extends ILedger {
42
49
  accounts?: Array<IAccount>;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/lib/crypto/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY3J5cHRvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxyXG4gICAgSUpzb25ScGNQcm92aWRlciwgXHJcbiAgICBCYWxhbmNlLCBcclxuICAgIEhhc2gsIFxyXG4gICAgSGV4U3RyaW5nLCBcclxuICAgIFF1ZXJ5U3Rha2VzT3JkZXIsXHJcbiAgICBOZXR3b3JrLCBcclxuICAgIFN0YWtlRW50cnksIFxyXG4gICAgVmFsdWVUcmFuc2Zlck91dHB1dCwgXHJcbn0gZnJvbSBcIi4uL3R5cGVzXCJcclxuXHJcbmltcG9ydCB7IFxyXG4gICAgQ29pbnMsXHJcbiAgICBLZXllZFNpZ25hdHVyZSxcclxuICAgIFB1YmxpY0tleSwgXHJcbiAgICBQdWJsaWNLZXlIYXNoU3RyaW5nLFxyXG4gICAgVHJhbnNhY3Rpb25SZWNlaXB0LFxyXG4gICAgVXR4bywgVXR4b0NhY2hlSW5mbywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LFxyXG59IGZyb20gXCIuL3R5cGVzXCJcclxuXHJcbmV4cG9ydCB7IEJJUDMySW50ZXJmYWNlIGFzIElCSVAzMiB9IGZyb20gJ2JpcDMyJ1xyXG5leHBvcnQgeyBJSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBY2NvdW50IGV4dGVuZHMgSUxlZGdlciB7XHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgICBpbnRlcm5hbDogSVNpZ25lclxyXG4gICAgZXh0ZXJuYWw6IElTaWduZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGVkZ2VyIHtcclxuICAgIFxyXG4gICAgY2FjaGVJbmZvOiBVdHhvQ2FjaGVJbmZvXHJcbiAgICBjaGFuZ2VQa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcsXHJcbiAgICBuZXR3b3JrPzogTmV0d29ya1xyXG4gICAgcGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nXHJcbiAgICBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlclxyXG4gICAgcHVibGljS2V5OiBQdWJsaWNLZXlcclxuICAgIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcclxuICAgIFxyXG4gICAgYWRkVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogeyBleGNsdWRlZDogQXJyYXk8VXR4bz4sIGluY2x1ZGVkOiBBcnJheTxVdHhvPiB9XHJcbiAgICBjb25zdW1lVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogYW55XHJcbiAgICBzZWxlY3RVdHhvcyhzcGVjcz86IHsgXHJcbiAgICAgICAgdmFsdWU/OiBDb2lucywgXHJcbiAgICAgICAgcmVsb2FkPzogYm9vbGVhbiwgXHJcbiAgICAgICAgc3RyYXRlZ3k/OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj5cclxuXHJcbiAgICBnZXRCYWxhbmNlKCk6IFByb21pc2U8QmFsYW5jZT5cclxuICAgIGdldERlbGVnYXRlZXMob3JkZXI/OiBRdWVyeVN0YWtlc09yZGVyLCBsZWZ0Sm9pbj86IGJvb2xlYW4pOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PlxyXG4gICAgZ2V0U2lnbmVyKHBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBJU2lnbmVyIHwgdW5kZWZpbmVkXHJcbiAgICBnZXRVdHhvcyhzcGVjcz86IGFueSk6IFByb21pc2U8QXJyYXk8VXR4bz4+XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvaW5iYXNlIGV4dGVuZHMgSVNpZ25lciB7XHJcbiAgICBhdXRob3JpemVTdGFrZSh3aXRoZHJhd2VyOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSGV4U3RyaW5nXHJcbiAgICBnZXRXaXRoZHJhd2VycyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTaWduZXIgZXh0ZW5kcyBJTGVkZ2VyIHtcclxuICAgIGdldFN0YWtlRW50cnlOb25jZSh2YWxpZGF0b3I6IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBQcm9taXNlPG51bWJlcj5cclxuICAgIHNpZ25IYXNoKGhhc2g6IGFueSk6IEtleWVkU2lnbmF0dXJlXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVdhbGxldCBleHRlbmRzIElMZWRnZXIge1xyXG4gICAgYWNjb3VudHM/OiBBcnJheTxJQWNjb3VudD5cclxuICAgIGNvaW5iYXNlOiBJQ29pbmJhc2VcclxuICAgIGRlcml2ZUFjY291bnRzKGluZGV4OiBudW1iZXIpOiBBcnJheTxJQWNjb3VudD5cclxuICAgIGV4cGxvcmVBY2NvdW50cyhwYXJhbXM/OiBhbnkpOiBQcm9taXNlPEFycmF5PElBY2NvdW50Pj5cclxuICAgIGdldEFjY291bnQocGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nLCBnYXA/OiBudW1iZXIpOiBJQWNjb3VudCB8IHVuZGVmaW5lZFxyXG4gICAgZ2V0U2lnbmVyKHBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcsIGdhcD86IG51bWJlcik6IElTaWduZXIgfCB1bmRlZmluZWRcclxufVxyXG5cclxuaW50ZXJmYWNlIElIYXNoYWJsZSB7XHJcbiAgICBieXRlY29kZT86IFVpbnQ4QXJyYXlcclxuICAgIGhhc2g/OiBIYXNoXHJcbiAgICB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuLCBwYXJhbXM/OiBhbnkpOiBhbnlcclxuICAgIHRvUHJvdG9idWYoKTogYW55XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbWl0dGVyIHtcclxuICAgIG5ldHdvcms6IE5ldHdvcmtcclxuICAgIHBheWxvYWQ/OiBhbnlcclxuICAgIHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyXHJcbiAgICB0cmFuc2FjdGlvbnM6IEFycmF5PEhhc2g+LFxyXG4gICAgdHlwZTogc3RyaW5nXHJcbiAgICBjb25maXJtVHJhbnNhY3Rpb24ocGFyYW1zPzogYW55KTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+XHJcbiAgICBzZW5kVHJhbnNhY3Rpb24ocGFyYW1zPzogYW55KTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+XHJcbiAgICBzaWduVHJhbnNhY3Rpb24ocGFyYW1zPzogYW55LCByZWxvYWQ/OiBib29sZWFuKTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4gZXh0ZW5kcyBJSGFzaGFibGUge1xyXG4gICAgY2hhbmdlPzogQ29pbnNcclxuICAgIGNvdmVyZWQ6IGJvb2xlYW5cclxuICAgIGZlZXM/OiBDb2luc1xyXG4gICAgbWF4V2VpZ2h0OiBudW1iZXJcclxuICAgIHByZXBhcmVkOiBib29sZWFuXHJcbiAgICBvdXRwdXRzOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PlxyXG4gICAgdGFyZ2V0PzogU3BlY3NcclxuICAgIHZhbHVlPzogQ29pbnNcclxuICAgIHdlaWdodDogbnVtYmVyXHJcbiAgICBjb25zdW1lVXR4b3MobGVkZ2VyOiBJTGVkZ2VyLCBwYXJhbXM/OiBhbnkpOiBhbnlcclxuICAgIGludG9SZWNlaXB0KHRhcmdldDogU3BlY3MsIG5ldHdvcms/OiBOZXR3b3JrKTogYW55XHJcbiAgICBwcmVwYXJlT3V0cHV0cyhwYXJhbXM/OiBhbnkpOiBhbnlcclxuICAgIHJlc2V0VGFyZ2V0KHRhcmdldDogU3BlY3MpOiBhbnlcclxuICAgIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4sIG5ldHdvcms/OiBOZXR3b3JrKTogYW55XHJcbiAgICB2YWxpZGF0ZVRhcmdldCh0YXJnZXQ/OiBTcGVjcyk6IFNwZWNzIHwgdW5kZWZpbmVkXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zYWN0aW9uUGF5bG9hZE11bHRpU2lnPFNwZWNzPiBleHRlbmRzIElUcmFuc2FjdGlvblBheWxvYWQ8U3BlY3M+IHtcclxuICAgIGlucHV0czogQXJyYXk8VXR4bz5cclxufVxyXG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY3J5cHRvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFxyXG4gICAgSUpzb25ScGNQcm92aWRlciwgXHJcbiAgICBCYWxhbmNlLCBcclxuICAgIEhhc2gsIFxyXG4gICAgSGV4U3RyaW5nLCBcclxuICAgIFF1ZXJ5U3Rha2VzT3JkZXIsXHJcbiAgICBOZXR3b3JrLCBcclxuICAgIFN0YWtlRW50cnksIFxyXG4gICAgVmFsdWVUcmFuc2Zlck91dHB1dCwgXHJcbn0gZnJvbSBcIi4uL3R5cGVzXCJcclxuXHJcbmltcG9ydCB7IFxyXG4gICAgQ29pbnMsXHJcbiAgICBLZXllZFNpZ25hdHVyZSxcclxuICAgIFB1YmxpY0tleSwgXHJcbiAgICBQdWJsaWNLZXlIYXNoU3RyaW5nLFxyXG4gICAgVHJhbnNhY3Rpb25SZWNlaXB0LFxyXG4gICAgVXR4bywgVXR4b0NhY2hlSW5mbywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LFxyXG59IGZyb20gXCIuL3R5cGVzXCJcclxuXHJcbmV4cG9ydCB7IEJJUDMySW50ZXJmYWNlIGFzIElCSVAzMiB9IGZyb20gJ2JpcDMyJ1xyXG5leHBvcnQgeyBJSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBY2NvdW50IGV4dGVuZHMgSUxlZGdlciB7XHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgICBpbnRlcm5hbDogSVNpZ25lclxyXG4gICAgZXh0ZXJuYWw6IElTaWduZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGVkZ2VyIHtcclxuICAgIFxyXG4gICAgY2FjaGVJbmZvOiBVdHhvQ2FjaGVJbmZvXHJcbiAgICBjaGFuZ2VQa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcsXHJcbiAgICBuZXR3b3JrPzogTmV0d29ya1xyXG4gICAgcGtoOiBQdWJsaWNLZXlIYXNoU3RyaW5nXHJcbiAgICBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlclxyXG4gICAgcHVibGljS2V5OiBQdWJsaWNLZXlcclxuICAgIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcclxuICAgIFxyXG4gICAgYWRkVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogeyBleGNsdWRlZDogQXJyYXk8VXR4bz4sIGluY2x1ZGVkOiBBcnJheTxVdHhvPiB9XHJcbiAgICBjb25zdW1lVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogYW55XHJcbiAgICBzZWxlY3RVdHhvcyhzcGVjcz86IHsgXHJcbiAgICAgICAgdmFsdWU/OiBDb2lucywgXHJcbiAgICAgICAgcmVsb2FkPzogYm9vbGVhbiwgXHJcbiAgICAgICAgc3RyYXRlZ3k/OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj5cclxuXHJcbiAgICBnZXRCYWxhbmNlKCk6IFByb21pc2U8QmFsYW5jZT5cclxuICAgIGdldERlbGVnYXRlZXMob3JkZXI/OiBRdWVyeVN0YWtlc09yZGVyLCBsZWZ0Sm9pbj86IGJvb2xlYW4pOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PlxyXG4gICAgZ2V0U2lnbmVyKHBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBJU2lnbmVyIHwgdW5kZWZpbmVkXHJcbiAgICBnZXRVdHhvcyhzcGVjcz86IGFueSk6IFByb21pc2U8QXJyYXk8VXR4bz4+XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNvaW5iYXNlIGV4dGVuZHMgSVNpZ25lciB7XHJcbiAgICBhdXRob3JpemVTdGFrZSh3aXRoZHJhd2VyOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSGV4U3RyaW5nXHJcbiAgICBnZXRXaXRoZHJhd2VycyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTaWduZXIgZXh0ZW5kcyBJTGVkZ2VyIHtcclxuICAgIGF1dGhvcml6ZUV2bUFkZHJlc3MoZXZtQWRkcmVzczogSGV4U3RyaW5nKTogYW55O1xyXG4gICAgZ2V0U3Rha2VFbnRyeU5vbmNlKHZhbGlkYXRvcjogUHVibGljS2V5SGFzaFN0cmluZyk6IFByb21pc2U8bnVtYmVyPlxyXG4gICAgc2lnbkhhc2goaGFzaDogYW55KTogS2V5ZWRTaWduYXR1cmVcclxuICAgIHNpZ25NZXNzYWdlKHRleHQ6IHN0cmluZyk6IHsgXHJcbiAgICAgICAgYWRkcmVzczogc3RyaW5nLCBcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsIFxyXG4gICAgICAgIHB1YmxpY0tleTogSGV4U3RyaW5nLCBcclxuICAgICAgICBzaWduYXR1cmU6IEhleFN0cmluZyBcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJV2FsbGV0IGV4dGVuZHMgSUxlZGdlciB7XHJcbiAgICBhY2NvdW50cz86IEFycmF5PElBY2NvdW50PlxyXG4gICAgY29pbmJhc2U6IElDb2luYmFzZVxyXG4gICAgZGVyaXZlQWNjb3VudHMoaW5kZXg6IG51bWJlcik6IEFycmF5PElBY2NvdW50PlxyXG4gICAgZXhwbG9yZUFjY291bnRzKHBhcmFtcz86IGFueSk6IFByb21pc2U8QXJyYXk8SUFjY291bnQ+PlxyXG4gICAgZ2V0QWNjb3VudChwa2g6IFB1YmxpY0tleUhhc2hTdHJpbmcsIGdhcD86IG51bWJlcik6IElBY2NvdW50IHwgdW5kZWZpbmVkXHJcbiAgICBnZXRTaWduZXIocGtoPzogUHVibGljS2V5SGFzaFN0cmluZywgZ2FwPzogbnVtYmVyKTogSVNpZ25lciB8IHVuZGVmaW5lZFxyXG59XHJcblxyXG5pbnRlcmZhY2UgSUhhc2hhYmxlIHtcclxuICAgIGJ5dGVjb2RlPzogVWludDhBcnJheVxyXG4gICAgaGFzaD86IEhhc2hcclxuICAgIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4sIHBhcmFtcz86IGFueSk6IGFueVxyXG4gICAgdG9Qcm90b2J1ZigpOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNtaXR0ZXIge1xyXG4gICAgbmV0d29yazogTmV0d29ya1xyXG4gICAgcGF5bG9hZD86IGFueVxyXG4gICAgcHJvdmlkZXI6IElKc29uUnBjUHJvdmlkZXJcclxuICAgIHRyYW5zYWN0aW9uczogQXJyYXk8SGFzaD4sXHJcbiAgICB0eXBlOiBzdHJpbmdcclxuICAgIGNvbmZpcm1UcmFuc2FjdGlvbihwYXJhbXM/OiBhbnkpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD5cclxuICAgIHNlbmRUcmFuc2FjdGlvbihwYXJhbXM/OiBhbnkpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD5cclxuICAgIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM/OiBhbnksIHJlbG9hZD86IGJvb2xlYW4pOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNhY3Rpb25QYXlsb2FkPFNwZWNzPiBleHRlbmRzIElIYXNoYWJsZSB7XHJcbiAgICBjaGFuZ2U/OiBDb2luc1xyXG4gICAgY292ZXJlZDogYm9vbGVhblxyXG4gICAgZmVlcz86IENvaW5zXHJcbiAgICBtYXhXZWlnaHQ6IG51bWJlclxyXG4gICAgcHJlcGFyZWQ6IGJvb2xlYW5cclxuICAgIG91dHB1dHM6IEFycmF5PFZhbHVlVHJhbnNmZXJPdXRwdXQ+XHJcbiAgICB0YXJnZXQ/OiBTcGVjc1xyXG4gICAgdmFsdWU/OiBDb2luc1xyXG4gICAgd2VpZ2h0OiBudW1iZXJcclxuICAgIGNvbnN1bWVVdHhvcyhsZWRnZXI6IElMZWRnZXIsIHBhcmFtcz86IGFueSk6IGFueVxyXG4gICAgaW50b1JlY2VpcHQodGFyZ2V0OiBTcGVjcywgbmV0d29yaz86IE5ldHdvcmspOiBhbnlcclxuICAgIHByZXBhcmVPdXRwdXRzKHBhcmFtcz86IGFueSk6IGFueVxyXG4gICAgcmVzZXRUYXJnZXQodGFyZ2V0OiBTcGVjcyk6IGFueVxyXG4gICAgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbiwgbmV0d29yaz86IE5ldHdvcmspOiBhbnlcclxuICAgIHZhbGlkYXRlVGFyZ2V0KHRhcmdldD86IFNwZWNzKTogU3BlY3MgfCB1bmRlZmluZWRcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+IGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4ge1xyXG4gICAgaW5wdXRzOiBBcnJheTxVdHhvPlxyXG59XHJcbiJdfQ==
@@ -17,10 +17,10 @@ type DataRequestOutputSLA = {
17
17
  witnessReward?: number;
18
18
  };
19
19
  export declare class DataRequestPayload extends TransactionPayloadMultiSig<DataRequestParams> {
20
- static COLLATERAL_RATIO: number;
21
20
  static DEFAULT_WITNESSES: number;
22
21
  static MAX_WEIGHT: number;
23
22
  static MIN_COLLATERAL: bigint;
23
+ static MIN_CONSENSUS_PERCENTAGE: number;
24
24
  protected _request?: RadonRequest;
25
25
  readonly template?: RadonTemplate;
26
26
  constructor(protoTypeName: string, radon: RadonRequest | RadonTemplate, initialTarget?: DataRequestParams);
@@ -47,7 +47,7 @@ export declare class DataRequestPayload extends TransactionPayloadMultiSig<DataR
47
47
  protected _cleanTargetExtras(target?: any): any;
48
48
  protected _estimateNetworkFees(provider: IJsonRpcProvider, priority?: TransactionPriority): Promise<bigint>;
49
49
  protected _fees2UnitaryCommitRevealReward(fees: bigint, witnesses: number): bigint;
50
- protected _fees2UnitaryReward(fees: bigint): bigint;
50
+ protected _fees2UnitaryReward(fees: bigint, witnesses: number): bigint;
51
51
  protected _fees2Value(fees: bigint, witnesses: number): bigint;
52
52
  protected _toDrOutputProtobuf(): any;
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataRequestPayload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/payloads/DataRequestPayload.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EAAE,KAAK,EAAiB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAGvF,MAAM,MAAM,uBAAuB,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAA;AAE1E,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IAChD,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAA;AAED,KAAK,oBAAoB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA;AAYD,qBAAa,kBAAmB,SAAQ,0BAA0B,CAAC,iBAAiB,CAAC;IAEjF,OAAc,gBAAgB,SAAM;IACpC,OAAc,iBAAiB,SAAK;IACpC,OAAc,UAAU,SAAS;IACjC,OAAc,cAAc,SAAkB;IAE9C,SAAS,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACjC,SAAgB,QAAQ,CAAC,EAAE,aAAa,CAAA;gBAE3B,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,aAAa,EAAE,aAAa,CAAC,EAAE,iBAAiB;IAW1G,IAAW,OAAO,IAAI,IAAI,GAAG,SAAS,CAkBrC;IAED,IAAW,MAAM,IAAI,oBAAoB,GAAG,SAAS,CA4BpD;IAED,IAAW,IAAI,IAAI,IAAI,GAAG,SAAS,CAUlC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,QAAQ,IAAI,OAAO,CAO7B;IAED,IAAW,OAAO,IAAI,uBAAuB,GAAG,SAAS,CAExD;IAED,IAAW,OAAO,IAAI,SAAS,GAAG,SAAS,CAE1C;IAED,IAAW,OAAO,IAAI,YAAY,GAAG,SAAS,CAE7C;IAED,IAAW,KAAK,IAAI,KAAK,CAMxB;IAED,IAAW,MAAM,IAAI,MAAM,CAiB1B;IAEY,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAyDtE,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG;IAS3C,cAAc,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,GAAG;IAU/C,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG;IA6B3C,MAAM,CAAC,QAAQ,UAAQ,GAAG,GAAG;IAqB7B,UAAU,IAAI,GAAG;IAwBjB,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,iBAAiB,GAAG,SAAS;IA4BlE,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG;cAa/B,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,sBAA6B,GAAG,OAAO,CAAC,MAAM,CAAC;IAexH,SAAS,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAIlF,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMnD,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAS9D,SAAS,CAAC,mBAAmB,IAAI,GAAG;CAQvC"}
1
+ {"version":3,"file":"DataRequestPayload.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/payloads/DataRequestPayload.ts"],"names":[],"mappings":"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"}