algosdk 3.6.0 → 3.7.0-beta.1

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 (109) hide show
  1. package/dist/browser/algosdk.min.js +1 -1
  2. package/dist/browser/algosdk.min.js.map +1 -1
  3. package/dist/cjs/client/v2/algod/algod.js +0 -18
  4. package/dist/cjs/client/v2/algod/algod.js.map +1 -1
  5. package/dist/cjs/client/v2/algod/models/types.js +2 -434
  6. package/dist/cjs/client/v2/algod/models/types.js.map +1 -1
  7. package/dist/cjs/ed25519-signer.js +76 -0
  8. package/dist/cjs/ed25519-signer.js.map +1 -0
  9. package/dist/cjs/encoding/address.js +61 -1
  10. package/dist/cjs/encoding/address.js.map +1 -1
  11. package/dist/cjs/falcon-signer.js +17 -0
  12. package/dist/cjs/falcon-signer.js.map +1 -0
  13. package/dist/cjs/logicsig.js +201 -16
  14. package/dist/cjs/logicsig.js.map +1 -1
  15. package/dist/cjs/main.js +32 -63
  16. package/dist/cjs/main.js.map +1 -1
  17. package/dist/cjs/mnemonic/mnemonic.js +26 -1
  18. package/dist/cjs/mnemonic/mnemonic.js.map +1 -1
  19. package/dist/cjs/multisigSigning.js +78 -1
  20. package/dist/cjs/multisigSigning.js.map +1 -1
  21. package/dist/cjs/pq-signer.js +54 -0
  22. package/dist/cjs/pq-signer.js.map +1 -0
  23. package/dist/cjs/signedTransaction.js +15 -1
  24. package/dist/cjs/signedTransaction.js.map +1 -1
  25. package/dist/cjs/signer.js.map +1 -1
  26. package/dist/cjs/signing.js +94 -7
  27. package/dist/cjs/signing.js.map +1 -1
  28. package/dist/cjs/transaction.js +9 -1
  29. package/dist/cjs/transaction.js.map +1 -1
  30. package/dist/cjs/types/transactions/encoded.js +51 -1
  31. package/dist/cjs/types/transactions/encoded.js.map +1 -1
  32. package/dist/cjs/utils/ed25519-check.js +69 -0
  33. package/dist/cjs/utils/ed25519-check.js.map +1 -0
  34. package/dist/esm/client/v2/algod/algod.js +0 -18
  35. package/dist/esm/client/v2/algod/algod.js.map +1 -1
  36. package/dist/esm/client/v2/algod/models/types.js +0 -427
  37. package/dist/esm/client/v2/algod/models/types.js.map +1 -1
  38. package/dist/esm/ed25519-signer.js +72 -0
  39. package/dist/esm/ed25519-signer.js.map +1 -0
  40. package/dist/esm/encoding/address.js +58 -0
  41. package/dist/esm/encoding/address.js.map +1 -1
  42. package/dist/esm/falcon-signer.js +13 -0
  43. package/dist/esm/falcon-signer.js.map +1 -0
  44. package/dist/esm/logicsig.js +200 -15
  45. package/dist/esm/logicsig.js.map +1 -1
  46. package/dist/esm/main.js +8 -56
  47. package/dist/esm/main.js.map +1 -1
  48. package/dist/esm/mnemonic/mnemonic.js +25 -1
  49. package/dist/esm/mnemonic/mnemonic.js.map +1 -1
  50. package/dist/esm/multisigSigning.js +75 -0
  51. package/dist/esm/multisigSigning.js.map +1 -1
  52. package/dist/esm/pq-signer.js +50 -0
  53. package/dist/esm/pq-signer.js.map +1 -0
  54. package/dist/esm/signedTransaction.js +16 -2
  55. package/dist/esm/signedTransaction.js.map +1 -1
  56. package/dist/esm/signer.js.map +1 -1
  57. package/dist/esm/signing.js +91 -8
  58. package/dist/esm/signing.js.map +1 -1
  59. package/dist/esm/transaction.js +9 -1
  60. package/dist/esm/transaction.js.map +1 -1
  61. package/dist/esm/types/transactions/encoded.js +49 -1
  62. package/dist/esm/types/transactions/encoded.js.map +1 -1
  63. package/dist/esm/utils/ed25519-check.js +65 -0
  64. package/dist/esm/utils/ed25519-check.js.map +1 -0
  65. package/dist/types/client/v2/algod/algod.d.ts +0 -16
  66. package/dist/types/client/v2/algod/models/types.d.ts +0 -217
  67. package/dist/types/ed25519-signer.d.ts +7 -0
  68. package/dist/types/encoding/address.d.ts +37 -0
  69. package/dist/types/falcon-signer.d.ts +11 -0
  70. package/dist/types/logicsig.d.ts +72 -1
  71. package/dist/types/main.d.ts +8 -44
  72. package/dist/types/mnemonic/mnemonic.d.ts +13 -0
  73. package/dist/types/multisigSigning.d.ts +49 -0
  74. package/dist/types/pq-signer.d.ts +8 -0
  75. package/dist/types/signedTransaction.d.ts +7 -2
  76. package/dist/types/signer.d.ts +38 -0
  77. package/dist/types/signing.d.ts +45 -0
  78. package/dist/types/transaction.d.ts +9 -0
  79. package/dist/types/types/transactions/encoded.d.ts +27 -0
  80. package/dist/types/utils/ed25519-check.d.ts +10 -0
  81. package/package.json +2 -1
  82. package/src/client/v2/algod/algod.ts +0 -19
  83. package/src/client/v2/algod/models/types.ts +0 -700
  84. package/src/ed25519-signer.ts +125 -0
  85. package/src/encoding/address.ts +80 -0
  86. package/src/falcon-signer.ts +30 -0
  87. package/src/logicsig.ts +258 -16
  88. package/src/main.ts +30 -60
  89. package/src/mnemonic/mnemonic.ts +34 -1
  90. package/src/multisigSigning.ts +111 -0
  91. package/src/pq-signer.ts +90 -0
  92. package/src/signedTransaction.ts +24 -0
  93. package/src/signer.ts +53 -0
  94. package/src/signing.ts +109 -8
  95. package/src/transaction.ts +9 -1
  96. package/src/types/transactions/encoded.ts +88 -0
  97. package/src/utils/ed25519-check.ts +67 -0
  98. package/dist/cjs/client/v2/algod/dryrun.js +0 -34
  99. package/dist/cjs/client/v2/algod/dryrun.js.map +0 -1
  100. package/dist/cjs/dryrun.js +0 -214
  101. package/dist/cjs/dryrun.js.map +0 -1
  102. package/dist/esm/client/v2/algod/dryrun.js +0 -28
  103. package/dist/esm/client/v2/algod/dryrun.js.map +0 -1
  104. package/dist/esm/dryrun.js +0 -208
  105. package/dist/esm/dryrun.js.map +0 -1
  106. package/dist/types/client/v2/algod/dryrun.d.ts +0 -11
  107. package/dist/types/dryrun.d.ts +0 -28
  108. package/src/client/v2/algod/dryrun.ts +0 -38
  109. package/src/dryrun.ts +0 -292
@@ -0,0 +1,72 @@
1
+ import { Address } from './encoding/address.js';
2
+ import { encodeMsgpack } from './encoding/encoding.js';
3
+ import { MSIG_PROGRAM_TAG, PROGRAM_TAG, SIGN_PROGRAM_DATA_PREFIX, } from './logicsig.js';
4
+ import { addressFromMultisigPreImg, pksFromAddresses } from './multisig.js';
5
+ import { SignedTransaction } from './signedTransaction.js';
6
+ import { SIGN_BYTES_PREFIX } from './signing.js';
7
+ import { arrayEqual, concatArrays } from './utils/utils.js';
8
+ export function addressWithSignersFromRawEd25519Signer(ed25519SigningKey, sendingAddress = new Address(ed25519SigningKey.ed25519PublicKey)) {
9
+ const authAddress = new Address(ed25519SigningKey.ed25519PublicKey);
10
+ const { ed25519Signer: rawSigner } = ed25519SigningKey;
11
+ const txnSigner = async (txnGroup, indexesToSign) => {
12
+ const stxns = [];
13
+ for (const index of indexesToSign) {
14
+ const txn = txnGroup[index];
15
+ // eslint-disable-next-line no-await-in-loop
16
+ const sig = await rawSigner(txn.bytesToSign());
17
+ const stxn = new SignedTransaction({
18
+ txn,
19
+ sig,
20
+ sgnr: txn.sender.equals(authAddress) ? undefined : authAddress,
21
+ });
22
+ stxns.push(stxn);
23
+ }
24
+ return stxns.map((stxn) => encodeMsgpack(stxn));
25
+ };
26
+ const delegatedLsigSigner = async (lsig, msig) => {
27
+ if (msig) {
28
+ const pks = pksFromAddresses(msig.addrs);
29
+ const multisigAddr = addressFromMultisigPreImg({
30
+ version: msig.version,
31
+ threshold: msig.threshold,
32
+ pks,
33
+ });
34
+ const toBeSigned = concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, lsig.logic);
35
+ const subsigs = pks.map((pk) => ({ pk }));
36
+ const ourSubsig = subsigs.find((subsig) => arrayEqual(subsig.pk, authAddress.publicKey));
37
+ if (ourSubsig === undefined) {
38
+ throw Error(`DelegatedLsigSigner could not find ${authAddress} as a signer in the multisig`);
39
+ }
40
+ const sig = await rawSigner(toBeSigned);
41
+ ourSubsig.s = sig;
42
+ return {
43
+ address: authAddress,
44
+ lmsig: {
45
+ v: msig.version,
46
+ thr: msig.threshold,
47
+ subsig: subsigs,
48
+ },
49
+ };
50
+ }
51
+ const toBeSigned = concatArrays(PROGRAM_TAG, lsig.logic);
52
+ const sig = await rawSigner(toBeSigned);
53
+ return { address: authAddress, sig };
54
+ };
55
+ const mxBytesSigner = async (bytes) => {
56
+ const bytesToSign = concatArrays(SIGN_BYTES_PREFIX, bytes);
57
+ return rawSigner(bytesToSign);
58
+ };
59
+ const programDataSigner = async (data, lsig) => {
60
+ const parts = concatArrays(lsig.address().publicKey, data);
61
+ const toBeSigned = concatArrays(SIGN_PROGRAM_DATA_PREFIX, parts);
62
+ return rawSigner(toBeSigned);
63
+ };
64
+ return {
65
+ address: sendingAddress,
66
+ programDataSigner,
67
+ txnSigner,
68
+ delegatedLsigSigner,
69
+ mxBytesSigner,
70
+ };
71
+ }
72
+ //# sourceMappingURL=ed25519-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed25519-signer.js","sourceRoot":"","sources":["../../src/ed25519-signer.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,27 @@ import * as nacl from '../nacl/naclWrappers.js';
3
3
  import * as utils from '../utils/utils.js';
4
4
  import { encodeUint64 } from './uint64.js';
5
5
  import { bytesToHex } from './binarydata.js';
6
+ import { couldBeCurvePoint } from '../utils/ed25519-check.js';
6
7
  export const ALGORAND_ADDRESS_BYTE_LENGTH = 36;
7
8
  export const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
8
9
  export const ALGORAND_ADDRESS_LENGTH = 58;
9
10
  export const ALGORAND_ZERO_ADDRESS_STRING = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ';
10
11
  export const MALFORMED_ADDRESS_ERROR_MSG = 'address seems to be malformed';
11
12
  export const CHECKSUM_ADDRESS_ERROR_MSG = 'wrong checksum for address';
13
+ /**
14
+ * The domain-separation prefix prepended to a post-quantum address preimage
15
+ * before hashing. Matches go-algorand's protocol.PostQuantumAddress HashID.
16
+ */
17
+ const PQ_ADDRESS_PREFIX = new TextEncoder().encode('PQA');
18
+ /**
19
+ * The required byte length of a post-quantum signature scheme identifier.
20
+ */
21
+ export const PQ_SCHEME_SIZE = 2;
22
+ /**
23
+ * The largest value a post-quantum address salt may take. The salt occupies a
24
+ * single byte of the address preimage.
25
+ */
26
+ export const PQ_SALT_MAX = 0xff;
12
27
  function checksumFromPublicKey(pk) {
13
28
  return Uint8Array.from(nacl
14
29
  .genericHash(pk)
@@ -124,4 +139,47 @@ export function getApplicationAddress(appID) {
124
139
  const hash = nacl.genericHash(toBeSigned);
125
140
  return new Address(Uint8Array.from(hash));
126
141
  }
142
+ /**
143
+ * Derive a post-quantum (PQ) account address together with the canonical salt
144
+ * used to derive it.
145
+ *
146
+ * @param schemeBytes - The 2-byte ASCII PQ scheme identifier (e.g. "f1" for Falcon-1024).
147
+ * @param key - The scheme's canonical public key.
148
+ * @returns The derived Address and the canonical 1-byte salt.
149
+ */
150
+ export function addressFromPQKey(schemeBytes, key) {
151
+ if (schemeBytes.length !== PQ_SCHEME_SIZE)
152
+ throw new Error(`invalid PQ scheme length: expected ${PQ_SCHEME_SIZE} bytes, got ${schemeBytes.length}`);
153
+ // Rejection-sample the lowest salt that yields a PQ-compliant (non-Ed25519)
154
+ // address. The probability of exhausting the range is ~2^-256.
155
+ for (let salt = 0; salt <= PQ_SALT_MAX; salt++) {
156
+ const toBeHashed = utils.concatArrays(PQ_ADDRESS_PREFIX, schemeBytes, Uint8Array.of(salt), key);
157
+ const publicKey = Uint8Array.from(nacl.genericHash(toBeHashed));
158
+ if (!couldBeCurvePoint(publicKey)) {
159
+ return { address: new Address(publicKey), salt };
160
+ }
161
+ }
162
+ throw new Error('no canonical salt exists for this PQ public key and scheme');
163
+ }
164
+ /**
165
+ * Derive the account address that a post-quantum signature authorizes.
166
+ *
167
+ * Unlike an Ed25519 signature, a PQ signature carries the scheme, salt and
168
+ * public key of the signing account, so the address it authorizes is fully
169
+ * determined by the signature and does not have to be supplied out of band.
170
+ *
171
+ * This also validates the signature's self-consistency: the salt must be the
172
+ * canonical one for the given scheme and public key, which is what the network
173
+ * requires.
174
+ *
175
+ * @param pqsig - The post-quantum signature to derive the address from.
176
+ * @returns The address of the account the signature authorizes.
177
+ */
178
+ export function addressFromPQSig(pqsig) {
179
+ const { address, salt } = addressFromPQKey(pqsig.sch, pqsig.pk);
180
+ if (salt !== pqsig.slt) {
181
+ throw new Error(`invalid PQ signature salt: expected the canonical salt ${salt}, got ${pqsig.slt}`);
182
+ }
183
+ return address;
184
+ }
127
185
  //# sourceMappingURL=address.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/encoding/address.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/encoding/address.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { addressWithSignersFromRawPQSigner } from './pq-signer.js';
2
+ /**
3
+ * The 2-byte ASCII identifier of the Falcon-1024 post-quantum signature scheme.
4
+ */
5
+ export const FALCON_1024_SCHEME = new TextEncoder().encode('f1');
6
+ export function addressWithSignersFromRawFalcon1024Signer(falconSigningKey, sendingAddress) {
7
+ return addressWithSignersFromRawPQSigner({
8
+ pqScheme: FALCON_1024_SCHEME,
9
+ pqPublicKey: falconSigningKey.falcon1024PublicKey,
10
+ pqSigner: falconSigningKey.falcon1024Signer,
11
+ }, sendingAddress);
12
+ }
13
+ //# sourceMappingURL=falcon-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"falcon-signer.js","sourceRoot":"","sources":["../../src/falcon-signer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAOjE,MAAM,UAAU,yCAAyC,CACvD,gBAAsC,EACtC,cAAwB;IAExB,OAAO,iCAAiC,CACtC;QACE,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,gBAAgB,CAAC,mBAAmB;QACjD,QAAQ,EAAE,gBAAgB,CAAC,gBAAgB;KAC5C,EACD,cAAc,CACf,CAAC;AACJ,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import * as nacl from './nacl/naclWrappers.js';
2
- import { Address, isValidAddress } from './encoding/address.js';
2
+ import { Address, addressFromPQSig, isValidAddress, } from './encoding/address.js';
3
3
  import * as encoding from './encoding/encoding.js';
4
4
  import { NamedMapSchema, ArraySchema, ByteArraySchema, FixedLengthByteArraySchema, OptionalSchema, allOmitEmpty, } from './encoding/schema/index.js';
5
5
  import { verifyMultisig, addressFromMultisigPreImg, pksFromAddresses, } from './multisig.js';
6
6
  import * as utils from './utils/utils.js';
7
- import { encodedMultiSigToEncodingData, encodedMultiSigFromEncodingData, ENCODED_MULTISIG_SCHEMA, } from './types/transactions/encoded.js';
7
+ import { encodedMultiSigToEncodingData, encodedMultiSigFromEncodingData, ENCODED_MULTISIG_SCHEMA, ENCODED_PQSIG_SCHEMA, encodedPQSigToEncodingData, encodedPQSigFromEncodingData, } from './types/transactions/encoded.js';
8
8
  // base64regex is the regex to test for base64 strings
9
9
  const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
10
10
  /** sanityCheckProgram performs heuristic program validation:
@@ -29,8 +29,9 @@ export function sanityCheckProgram(program) {
29
29
  throw new Error('program bytes are all ASCII printable characters, not looking like Teal byte code');
30
30
  }
31
31
  }
32
- const programTag = new TextEncoder().encode('Program');
33
- const multisigProgramTag = new TextEncoder().encode('MsigProgram');
32
+ export const PROGRAM_TAG = new TextEncoder().encode('Program');
33
+ export const PQ_PROGRAM_TAG = new TextEncoder().encode('PQProgram');
34
+ export const MSIG_PROGRAM_TAG = new TextEncoder().encode('MsigProgram');
34
35
  /**
35
36
  LogicSig implementation
36
37
 
@@ -52,6 +53,7 @@ export class LogicSig {
52
53
  this.sig = undefined;
53
54
  this.msig = undefined;
54
55
  this.lmsig = undefined;
56
+ this.pqsig = undefined;
55
57
  }
56
58
  // eslint-disable-next-line class-methods-use-this
57
59
  getEncodingSchema() {
@@ -69,6 +71,9 @@ export class LogicSig {
69
71
  if (this.lmsig) {
70
72
  data.set('lmsig', encodedMultiSigToEncodingData(this.lmsig));
71
73
  }
74
+ if (this.pqsig) {
75
+ data.set('pqsig', encodedPQSigToEncodingData(this.pqsig));
76
+ }
72
77
  return data;
73
78
  }
74
79
  static fromEncodingData(data) {
@@ -83,14 +88,20 @@ export class LogicSig {
83
88
  if (data.get('lmsig')) {
84
89
  lsig.lmsig = encodedMultiSigFromEncodingData(data.get('lmsig'));
85
90
  }
91
+ if (data.get('pqsig')) {
92
+ lsig.pqsig = encodedPQSigFromEncodingData(data.get('pqsig'));
93
+ }
86
94
  return lsig;
87
95
  }
88
96
  /**
97
+ * @deprecated This function does not perform full verification and should not be fully trusted on its own.
98
+ * For example, it does not evaluate programs and does not have the ability to validate PQ signatures.
99
+ *
89
100
  * Performs signature verification
90
101
  * @param publicKey - Verification key (derived from sender address or escrow address)
91
102
  */
92
103
  verify(publicKey) {
93
- const sigCount = [this.sig, this.msig, this.lmsig].filter(Boolean).length;
104
+ const sigCount = [this.sig, this.msig, this.lmsig, this.pqsig].filter(Boolean).length;
94
105
  if (sigCount > 1) {
95
106
  return false;
96
107
  }
@@ -100,11 +111,18 @@ export class LogicSig {
100
111
  catch (e) {
101
112
  return false;
102
113
  }
103
- const toBeSigned = utils.concatArrays(programTag, this.logic);
104
- if (!this.sig && !this.msig && !this.lmsig) {
114
+ const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
115
+ if (!this.sig && !this.msig && !this.lmsig && !this.pqsig) {
105
116
  const hash = nacl.genericHash(toBeSigned);
106
117
  return utils.arrayEqual(hash, publicKey);
107
118
  }
119
+ if (this.pqsig) {
120
+ // This function has no way to validate a post-quantum signature, so it
121
+ // cannot report success here. Callers that need to sign a transaction
122
+ // with a PQ delegated LogicSig should go through
123
+ // signLogicSigTransactionObject, which skips this check.
124
+ return false;
125
+ }
108
126
  if (this.sig) {
109
127
  return nacl.verify(toBeSigned, this.sig, publicKey);
110
128
  }
@@ -114,7 +132,7 @@ export class LogicSig {
114
132
  threshold: this.lmsig.thr,
115
133
  pks: this.lmsig.subsig.map((subsig) => subsig.pk),
116
134
  });
117
- const lmsigProgram = utils.concatArrays(multisigProgramTag, multisigAddr.publicKey, this.logic);
135
+ const lmsigProgram = utils.concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, this.logic);
118
136
  return verifyMultisig(lmsigProgram, this.lmsig, publicKey);
119
137
  }
120
138
  if (this.msig) {
@@ -127,11 +145,13 @@ export class LogicSig {
127
145
  * @returns String representation of the address
128
146
  */
129
147
  address() {
130
- const toBeSigned = utils.concatArrays(programTag, this.logic);
148
+ const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
131
149
  const hash = nacl.genericHash(toBeSigned);
132
150
  return new Address(Uint8Array.from(hash));
133
151
  }
134
152
  /**
153
+ * @deprecated Use `signWithSigner` instead
154
+ *
135
155
  * Creates signature (if no msig provided) or multi signature otherwise
136
156
  * @param secretKey - Secret key to sign with
137
157
  * @param msig - Multisig account as \{version, threshold, addrs\}
@@ -152,6 +172,64 @@ export class LogicSig {
152
172
  }
153
173
  }
154
174
  /**
175
+ * Signs this LogicSig for delegation using the given signer.
176
+ *
177
+ * @param signer - The signer to delegate to
178
+ * @param msig - Optional multisig account the signer is a subsigner of
179
+ * @returns The address the signer signed as. When `msig` is omitted this is
180
+ * the delegating account. When `msig` is given it is the individual
181
+ * subsigner, not the multisig, so the delegating account is
182
+ * `multisigAddress(msig)`. Either way it is an authorizing address, which
183
+ * is not necessarily the address a signer sends transactions from.
184
+ *
185
+ * Re-signing an already-signed LogicSig is allowed, and replaces the previous
186
+ * delegation signature. At most one of `sig`, `msig`, `lmsig` and `pqsig` may
187
+ * be set, so any signature left over from an earlier call is cleared.
188
+ */
189
+ async signWithSigner(signer, msig) {
190
+ const sigResult = await signer(this, msig);
191
+ if (msig == null) {
192
+ if ('pqsig' in sigResult && sigResult.pqsig) {
193
+ this.clearSignatures();
194
+ this.pqsig = sigResult.pqsig;
195
+ return sigResult.address;
196
+ }
197
+ if (!('sig' in sigResult) || !sigResult.sig) {
198
+ throw Error('Expected DelegatedLsigSigner to return sig or pqsig, but both are undefined. If signing for an msig, be sure to pass the msig argument');
199
+ }
200
+ this.clearSignatures();
201
+ this.sig = sigResult.sig;
202
+ }
203
+ else {
204
+ if (!('lmsig' in sigResult) || !sigResult.lmsig) {
205
+ throw Error('Expected DelegatedLsigSigner to return lmsig, but lmsig is undefined. If signing for a single account, do not pass msig argument');
206
+ }
207
+ const { lmsig } = sigResult;
208
+ const expectedPks = pksFromAddresses(msig.addrs);
209
+ if (lmsig.v !== msig.version ||
210
+ lmsig.thr !== msig.threshold ||
211
+ lmsig.subsig.length !== expectedPks.length ||
212
+ !lmsig.subsig.every((subsig, i) => utils.arrayEqual(subsig.pk, expectedPks[i]))) {
213
+ throw Error('DelegatedLsigSigner returned an lmsig whose version, threshold or public keys do not match the requested multisig');
214
+ }
215
+ this.clearSignatures();
216
+ this.lmsig = sigResult.lmsig;
217
+ }
218
+ return sigResult.address;
219
+ }
220
+ /**
221
+ * Removes every delegation signature from this LogicSig, so that exactly one
222
+ * of them can be set afterwards.
223
+ */
224
+ clearSignatures() {
225
+ this.sig = undefined;
226
+ this.msig = undefined;
227
+ this.lmsig = undefined;
228
+ this.pqsig = undefined;
229
+ }
230
+ /**
231
+ * @deprecated Use `appendToMultisigWithSigner` instead
232
+ *
155
233
  * Appends a signature to multi signature
156
234
  * @param secretKey - Secret key to sign with
157
235
  */
@@ -162,21 +240,66 @@ export class LogicSig {
162
240
  const [sig, index] = this.singleSignMultisig(secretKey, this.lmsig);
163
241
  this.lmsig.subsig[index].s = sig;
164
242
  }
243
+ async appendToMultisigWithSigner(signer) {
244
+ if (this.lmsig === undefined) {
245
+ throw new Error('no multisig present');
246
+ }
247
+ const sigResult = await signer(this, {
248
+ version: this.lmsig.v,
249
+ threshold: this.lmsig.thr,
250
+ addrs: this.lmsig.subsig.map((s) => new Address(s.pk)),
251
+ });
252
+ if (!('lmsig' in sigResult) || !sigResult.lmsig) {
253
+ throw Error('Expected DelegatedLsigSigner to return lmsig, but lmsig is undefined');
254
+ }
255
+ if (sigResult.lmsig.v !== this.lmsig.v ||
256
+ sigResult.lmsig.thr !== this.lmsig.thr) {
257
+ throw Error('DelegatedLsigSigner returned an lmsig whose version or threshold does not match the current msig');
258
+ }
259
+ let signaturesReturned = false;
260
+ for (const subsig of sigResult.lmsig.subsig) {
261
+ if (subsig.s) {
262
+ signaturesReturned = true;
263
+ const thisSubsig = this.lmsig.subsig.find((s) => utils.arrayEqual(s.pk, subsig.pk));
264
+ if (thisSubsig === undefined) {
265
+ throw Error(`DelegatedLsigSigner returned a signature for ${new Address(subsig.pk)} but this pk is not in the current msig`);
266
+ }
267
+ // Never let the signer silently replace a signature already collected
268
+ // from another member.
269
+ if (thisSubsig.s && !utils.arrayEqual(thisSubsig.s, subsig.s)) {
270
+ throw Error(`DelegatedLsigSigner returned a signature for ${new Address(subsig.pk)} that conflicts with the signature already collected for it`);
271
+ }
272
+ thisSubsig.s = subsig.s;
273
+ }
274
+ }
275
+ if (!signaturesReturned) {
276
+ throw Error('DelegatedLsigSigner returned an lmsig with no signatures');
277
+ }
278
+ }
279
+ /**
280
+ * @deprecated Use `signWithSigner` followed by `.sig` instead
281
+ */
165
282
  signProgram(secretKey) {
166
- const toBeSigned = utils.concatArrays(programTag, this.logic);
283
+ const toBeSigned = utils.concatArrays(PROGRAM_TAG, this.logic);
167
284
  const sig = nacl.sign(toBeSigned, secretKey);
168
285
  return sig;
169
286
  }
287
+ /**
288
+ * @deprecated Use `signWithSigner` followed by `.sig` instead
289
+ */
170
290
  signProgramMultisig(secretKey, msig) {
171
291
  const multisigAddr = addressFromMultisigPreImg({
172
292
  version: msig.v,
173
293
  threshold: msig.thr,
174
294
  pks: msig.subsig.map((subsig) => subsig.pk),
175
295
  });
176
- const toBeSigned = utils.concatArrays(multisigProgramTag, multisigAddr.publicKey, this.logic);
296
+ const toBeSigned = utils.concatArrays(MSIG_PROGRAM_TAG, multisigAddr.publicKey, this.logic);
177
297
  const sig = nacl.sign(toBeSigned, secretKey);
178
298
  return sig;
179
299
  }
300
+ /**
301
+ * @deprecated Use `signWithSigner` followed by `.sig` instead
302
+ */
180
303
  singleSignMultisig(secretKey, msig) {
181
304
  let index = -1;
182
305
  const myPk = nacl.keyPairFromSecretKey(secretKey).publicKey;
@@ -199,6 +322,16 @@ export class LogicSig {
199
322
  static fromByte(encoded) {
200
323
  return encoding.decodeMsgpack(encoded, LogicSig);
201
324
  }
325
+ /**
326
+ * Signs arbitrary data for use with the `ed25519verify` opcode from within
327
+ * this LogicSig's program.
328
+ *
329
+ * @param signer - The signer to sign the data with
330
+ * @param data - The data to sign
331
+ */
332
+ async signDataWithSigner(signer, data) {
333
+ return signer(data, this);
334
+ }
202
335
  }
203
336
  LogicSig.encodingSchema = new NamedMapSchema(allOmitEmpty([
204
337
  {
@@ -221,6 +354,10 @@ LogicSig.encodingSchema = new NamedMapSchema(allOmitEmpty([
221
354
  key: 'lmsig',
222
355
  valueSchema: new OptionalSchema(ENCODED_MULTISIG_SCHEMA),
223
356
  },
357
+ {
358
+ key: 'pqsig',
359
+ valueSchema: new OptionalSchema(ENCODED_PQSIG_SCHEMA),
360
+ },
224
361
  ]));
225
362
  /**
226
363
  * Represents an account that can sign with a LogicSig program.
@@ -281,9 +418,15 @@ export class LogicSigAccount {
281
418
  * To verify the delegation signature, use `verify`.
282
419
  */
283
420
  isDelegated() {
284
- return !!(this.lsig.sig || this.lsig.msig || this.lsig.lmsig);
421
+ return !!(this.lsig.sig ||
422
+ this.lsig.msig ||
423
+ this.lsig.lmsig ||
424
+ this.lsig.pqsig);
285
425
  }
286
426
  /**
427
+ * @deprecated This function does not perform full verification and should not be fully trusted on its own.
428
+ * For example, it does not evaluate programs and does not have the ability to validate PQ signatures.
429
+ *
287
430
  * Verifies this LogicSig's program and signatures.
288
431
  * @returns true if and only if the LogicSig program and signatures are valid.
289
432
  */
@@ -301,9 +444,24 @@ export class LogicSigAccount {
301
444
  * escrow address that is the hash of the LogicSig's program code.
302
445
  */
303
446
  address() {
304
- const sigCount = [this.lsig.sig, this.lsig.msig, this.lsig.lmsig].filter(Boolean).length;
447
+ const sigCount = [
448
+ this.lsig.sig,
449
+ this.lsig.msig,
450
+ this.lsig.lmsig,
451
+ this.lsig.pqsig,
452
+ ].filter(Boolean).length;
305
453
  if (sigCount > 1) {
306
- throw new Error('LogicSig has too many signatures. At most one of sig, msig, or lmsig may be present');
454
+ throw new Error('LogicSig has too many signatures. At most one of sig, msig, lmsig, or pqsig may be present');
455
+ }
456
+ if (this.lsig.pqsig) {
457
+ // A PQ signature carries the scheme, salt and public key of the
458
+ // delegating account, so derive the address rather than trusting
459
+ // `sigkey`. Also throws if the signature is not self-consistent.
460
+ const derived = addressFromPQSig(this.lsig.pqsig);
461
+ if (this.sigkey && !utils.arrayEqual(this.sigkey, derived.publicKey)) {
462
+ throw new Error(`Signing key for delegated account does not match the PQ signature. The signature authorizes ${derived}, but sigkey is ${new Address(this.sigkey)}`);
463
+ }
464
+ return derived;
307
465
  }
308
466
  if (this.lsig.sig) {
309
467
  if (!this.sigkey) {
@@ -323,6 +481,8 @@ export class LogicSigAccount {
323
481
  return this.lsig.address();
324
482
  }
325
483
  /**
484
+ * @deprecated Use `signMultisigWithSigner` instead
485
+ *
326
486
  * Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig
327
487
  * has the authority to sign transactions on behalf of another account, called
328
488
  * the delegating account. Use this function if the delegating account is a
@@ -336,7 +496,12 @@ export class LogicSigAccount {
336
496
  signMultisig(msig, secretKey) {
337
497
  this.lsig.sign(secretKey, msig);
338
498
  }
499
+ async signMultisigWithSigner(msig, signer) {
500
+ await this.lsig.signWithSigner(signer, msig);
501
+ }
339
502
  /**
503
+ * @deprecated Use appendToMultisigWithSigner
504
+ *
340
505
  * Adds an additional signature from a member of the delegating multisig
341
506
  * account.
342
507
  *
@@ -346,7 +511,12 @@ export class LogicSigAccount {
346
511
  appendToMultisig(secretKey) {
347
512
  this.lsig.appendToMultisig(secretKey);
348
513
  }
514
+ async appendToMultisigWithSigner(signer) {
515
+ await this.lsig.appendToMultisigWithSigner(signer);
516
+ }
349
517
  /**
518
+ * @deprecated Use `signWithSigner` instead
519
+ *
350
520
  * Turns this LogicSigAccount into a delegated LogicSig. This type of LogicSig
351
521
  * has the authority to sign transactions on behalf of another account, called
352
522
  * the delegating account. If the delegating account is a multisig account,
@@ -358,6 +528,21 @@ export class LogicSigAccount {
358
528
  this.lsig.sign(secretKey);
359
529
  this.sigkey = nacl.keyPairFromSecretKey(secretKey).publicKey;
360
530
  }
531
+ /**
532
+ * Turns this LogicSigAccount into a delegated LogicSig, signed by the given
533
+ * signer. If the delegating account is a multisig account, use
534
+ * `signMultisigWithSigner` instead.
535
+ *
536
+ * @param signer - The signer of the delegating account.
537
+ */
538
+ async signWithSigner(signer) {
539
+ // Record the address the signer reports rather than any sending address it
540
+ // may advertise: the latter is the address the signer sends transactions
541
+ // from, which for a rekeyed account is not the account that authorizes
542
+ // this delegation.
543
+ const delegatingAddress = await this.lsig.signWithSigner(signer);
544
+ this.sigkey = delegatingAddress.publicKey;
545
+ }
361
546
  }
362
547
  LogicSigAccount.encodingSchema = new NamedMapSchema(allOmitEmpty([
363
548
  {
@@ -376,7 +561,7 @@ LogicSigAccount.encodingSchema = new NamedMapSchema(allOmitEmpty([
376
561
  export function logicSigFromByte(encoded) {
377
562
  return encoding.decodeMsgpack(encoded, LogicSig);
378
563
  }
379
- const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData');
564
+ export const SIGN_PROGRAM_DATA_PREFIX = new TextEncoder().encode('ProgData');
380
565
  /**
381
566
  * tealSign creates a signature compatible with ed25519verify opcode from program hash
382
567
  * @param sk - Uint8Array with secret key
@@ -1 +1 @@
1
- {"version":3,"file":"logicsig.js","sourceRoot":"","sources":["../../src/logicsig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logicsig.js","sourceRoot":"","sources":["../../src/logicsig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EACL,cAAc,EACd,WAAW,EACX,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,cAAc,EACd,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAEL,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EAEvB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAGzC,sDAAsD;AACtD,MAAM,WAAW,GACf,kEAAkE,CAAC;AAErE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IACpD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CACpC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,CACpD,CAAC;IAEF,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAErD,IAAI,cAAc,CAAC,UAAU,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAEpE,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEvD,MAAM,IAAI,KAAK,CACb,mFAAmF,CACpF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IAqCnB,YAAY,OAAmB,EAAE,WAAsC;QACrE,IACE,WAAW;YACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC1B,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,EAC9D,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,GAAiB,EAAE,CAAC;QAC5B,IAAI,WAAW,IAAI,IAAI;YACrB,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvD,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,kDAAkD;IAClD,iBAAiB;QACf,OAAO,QAAQ,CAAC,cAAc,CAAC;IACjC,CAAC;IAED,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAkB;YACpC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;YACjB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;YAClB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;SAClB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACnC,IAAI,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,SAAqB;QAC1B,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CACnE,OAAO,CACR,CAAC,MAAM,CAAC;QACT,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1C,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,uEAAuE;YACvE,sEAAsE;YACtE,iDAAiD;YACjD,yDAAyD;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,yBAAyB,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;gBACzB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CACrC,gBAAgB,EAChB,YAAY,CAAC,SAAS,EACtB,IAAI,CAAC,KAAK,CACX,CAAC;YACF,OAAO,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,KAAM,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,IAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,SAAqB,EAAE,IAAuB;QACjD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAEnE,IAAI,CAAC,KAAK,GAAG;gBACX,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,GAAG,EAAE,IAAI,CAAC,SAAS;gBACnB,MAAM,EAAE,OAAO;aAChB,CAAC;YAEF,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,cAAc,CAClB,MAA2B,EAC3B,IAAuB;QAEvB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC7B,OAAO,SAAS,CAAC,OAAO,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBAC5C,MAAM,KAAK,CACT,wIAAwI,CACzI,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAChD,MAAM,KAAK,CACT,kIAAkI,CACnI,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;YAC5B,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,IACE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO;gBACxB,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS;gBAC5B,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;gBAC1C,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAChC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAC5C,EACD,CAAC;gBACD,MAAM,KAAK,CACT,mHAAmH,CACpH,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,eAAe;QACrB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,SAAqB;QACpC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,MAA2B;QAC1D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAChD,MAAM,KAAK,CACT,sEAAsE,CACvE,CAAC;QACJ,CAAC;QACD,IACE,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EACtC,CAAC;YACD,MAAM,KAAK,CACT,kGAAkG,CACnG,CAAC;QACJ,CAAC;QAED,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC;gBACb,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAClC,CAAC;gBACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,KAAK,CACT,gDAAgD,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,yCAAyC,CAChH,CAAC;gBACJ,CAAC;gBACD,sEAAsE;gBACtE,uBAAuB;gBACvB,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9D,MAAM,KAAK,CACT,gDAAgD,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,6DAA6D,CACpI,CAAC;gBACJ,CAAC;gBACD,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAqB;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,SAAqB,EAAE,IAAqB;QAC9D,MAAM,YAAY,GAAG,yBAAyB,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,CAAC;YACf,SAAS,EAAE,IAAI,CAAC,GAAG;YACnB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CACnC,gBAAgB,EAChB,YAAY,CAAC,SAAS,EACtB,IAAI,CAAC,KAAK,CACX,CAAC;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,SAAqB,EACrB,IAAqB;QAErB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC/B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAuB;QACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAyB,EAAE,IAAgB;QAClE,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;;AAlZe,uBAAc,GAAG,IAAI,cAAc,CACjD,YAAY,CAAC;IACX;QACE,GAAG,EAAE,GAAG;QACR,WAAW,EAAE,IAAI,eAAe,EAAE;KACnC;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC;KACpD;IACD;QACE,GAAG,EAAE,KAAK;QACV,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;KACpE;IACD;QACE,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,IAAI,cAAc,CAAC,uBAAuB,CAAC;KACzD;IACD;QACE,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,IAAI,cAAc,CAAC,uBAAuB,CAAC;KACzD;IACD;QACE,GAAG,EAAE,OAAO;QACZ,WAAW,EAAE,IAAI,cAAc,CAAC,oBAAoB,CAAC;KACtD;CACF,CAAC,CACH,CAAC;AA0XJ;;GAEG;AACH,MAAM,OAAO,eAAe;IAiB1B;;;;;;;;OAQG;IACH,YAAY,OAAmB,EAAE,IAA+B;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED,kDAAkD;IAClD,iBAAiB;QACf,OAAO,eAAe,CAAC,cAAc,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,GAAG,CAAkB;YAC9B,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpC,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACnC,IAAI,CAAC,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,IAA4B,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,uCAAuC;QAChE,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAe,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAuB;QACrC,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,WAAW;QACT,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,IAAI,CAAC,GAAG;YACb,IAAI,CAAC,IAAI,CAAC,IAAI;YACd,IAAI,CAAC,IAAI,CAAC,KAAK;YACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;OAQG;IACH,OAAO;QACL,MAAM,QAAQ,GAAG;YACf,IAAI,CAAC,IAAI,CAAC,GAAG;YACb,IAAI,CAAC,IAAI,CAAC,IAAI;YACd,IAAI,CAAC,IAAI,CAAC,KAAK;YACf,IAAI,CAAC,IAAI,CAAC,KAAK;SAChB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACzB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,gEAAgE;YAChE,iEAAiE;YACjE,iEAAiE;YACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CACb,+FAA+F,OAAO,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACpJ,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,CAAC;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG;gBACnB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5C,CAAC;YACF,OAAO,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,IAAsB,EAAE,SAAqB;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,IAAsB,EACtB,MAA2B;QAE3B,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,SAAqB;QACpC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,MAA2B;QAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,CAAC,SAAqB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,MAA2B;QAC9C,2EAA2E;QAC3E,yEAAyE;QACzE,uEAAuE;QACvE,mBAAmB;QACnB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC;IAC5C,CAAC;;AA9Ne,8BAAc,GAAG,IAAI,cAAc,CACjD,YAAY,CAAC;IACX;QACE,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,QAAQ,CAAC,cAAc;KACrC;IACD;QACE,GAAG,EAAE,QAAQ;QACb,WAAW,EAAE,IAAI,cAAc,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;KACpE;CACF,CAAC,CACH,CAAC;AAsNJ;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmB;IAClD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,EAAc,EACd,IAAgB,EAChB,WAA6B;IAE7B,MAAM,WAAW,GACf,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QACjC,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,WAA6B,EAC7B,GAAe,EACf,EAAc;IAEd,MAAM,WAAW,GACf,OAAO,WAAW,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QACjC,CAAC,CAAC,WAAW,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAc,EACd,IAAgB,EAChB,OAAmB;IAEnB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC"}