@fuel-ts/account 0.96.0 → 0.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account.d.ts +6 -0
- package/dist/account.d.ts.map +1 -1
- package/dist/connectors/fuel.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.global.js +639 -310
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +661 -331
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +666 -338
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +16 -11
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +108 -126
- package/dist/providers/__generated__/operations.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +15 -11
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-request/blob-transaction-request.d.ts +2 -2
- package/dist/providers/transaction-request/blob-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-summary/get-transaction-summary.d.ts +3 -2
- package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/types.d.ts +38 -8
- package/dist/providers/transaction-summary/types.d.ts.map +1 -1
- package/dist/providers/utils/handle-gql-error-message.d.ts +2 -1
- package/dist/providers/utils/handle-gql-error-message.d.ts.map +1 -1
- package/dist/providers/utils/receipts.d.ts.map +1 -1
- package/dist/providers/utils/validate-pagination-args.d.ts +9 -0
- package/dist/providers/utils/validate-pagination-args.d.ts.map +1 -0
- package/dist/test-utils.global.js +376 -248
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +339 -221
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +350 -232
- package/dist/test-utils.mjs.map +1 -1
- package/dist/utils/deployScriptOrPredicate.d.ts +14 -0
- package/dist/utils/deployScriptOrPredicate.d.ts.map +1 -0
- package/dist/utils/formatTransferToContractScriptData.d.ts +7 -7
- package/dist/utils/formatTransferToContractScriptData.d.ts.map +1 -1
- package/dist/utils/predicate-script-loader-instructions.d.ts +9 -0
- package/dist/utils/predicate-script-loader-instructions.d.ts.map +1 -0
- package/package.json +17 -17
package/dist/index.global.js
CHANGED
@@ -989,7 +989,7 @@
|
|
989
989
|
}
|
990
990
|
return this._strip();
|
991
991
|
};
|
992
|
-
BN2.prototype.sub = function
|
992
|
+
BN2.prototype.sub = function sub2(num) {
|
993
993
|
return this.clone().isub(num);
|
994
994
|
};
|
995
995
|
function smallMulTo(self, num, out) {
|
@@ -2803,7 +2803,7 @@
|
|
2803
2803
|
}
|
2804
2804
|
return res;
|
2805
2805
|
};
|
2806
|
-
Red.prototype.sub = function
|
2806
|
+
Red.prototype.sub = function sub2(a, b) {
|
2807
2807
|
this._verify2(a, b);
|
2808
2808
|
var res = a.sub(b);
|
2809
2809
|
if (res.cmpn(0) < 0) {
|
@@ -20390,9 +20390,9 @@ spurious results.`);
|
|
20390
20390
|
}
|
20391
20391
|
});
|
20392
20392
|
|
20393
|
-
// ../../node_modules/.pnpm/@fuels+vm-asm@0.58.
|
20393
|
+
// ../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs
|
20394
20394
|
var require_node = __commonJS({
|
20395
|
-
"../../node_modules/.pnpm/@fuels+vm-asm@0.58.
|
20395
|
+
"../../node_modules/.pnpm/@fuels+vm-asm@0.58.2/node_modules/@fuels/vm-asm/dist/node/index.cjs"(exports) {
|
20396
20396
|
"use strict";
|
20397
20397
|
var wasm$1;
|
20398
20398
|
var cachedTextDecoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-8", { ignoreBOM: true, fatal: true }) : { decode: () => {
|
@@ -20514,7 +20514,7 @@ spurious results.`);
|
|
20514
20514
|
const ret3 = wasm$1.mod_(dst, lhs, rhs);
|
20515
20515
|
return Instruction.__wrap(ret3);
|
20516
20516
|
}
|
20517
|
-
function
|
20517
|
+
function move_2(dst, src) {
|
20518
20518
|
const ret3 = wasm$1.move_(dst, src);
|
20519
20519
|
return Instruction.__wrap(ret3);
|
20520
20520
|
}
|
@@ -20538,7 +20538,7 @@ spurious results.`);
|
|
20538
20538
|
const ret3 = wasm$1.srl(dst, lhs, rhs);
|
20539
20539
|
return Instruction.__wrap(ret3);
|
20540
20540
|
}
|
20541
|
-
function
|
20541
|
+
function sub2(dst, lhs, rhs) {
|
20542
20542
|
const ret3 = wasm$1.sub(dst, lhs, rhs);
|
20543
20543
|
return Instruction.__wrap(ret3);
|
20544
20544
|
}
|
@@ -20606,7 +20606,7 @@ spurious results.`);
|
|
20606
20606
|
const ret3 = wasm$1.cb(dst);
|
20607
20607
|
return Instruction.__wrap(ret3);
|
20608
20608
|
}
|
20609
|
-
function
|
20609
|
+
function ldc2(src_addr, offset, len, mode) {
|
20610
20610
|
const ret3 = wasm$1.ldc(src_addr, offset, len, mode);
|
20611
20611
|
return Instruction.__wrap(ret3);
|
20612
20612
|
}
|
@@ -20690,7 +20690,7 @@ spurious results.`);
|
|
20690
20690
|
const ret3 = wasm$1.bal(dst, asset_id_addr, contract_id_addr);
|
20691
20691
|
return Instruction.__wrap(ret3);
|
20692
20692
|
}
|
20693
|
-
function
|
20693
|
+
function jmp2(abs_target) {
|
20694
20694
|
const ret3 = wasm$1.jmp(abs_target);
|
20695
20695
|
return Instruction.__wrap(ret3);
|
20696
20696
|
}
|
@@ -20702,7 +20702,7 @@ spurious results.`);
|
|
20702
20702
|
const ret3 = wasm$1.smo(recipient_addr, data_addr, data_len, coins);
|
20703
20703
|
return Instruction.__wrap(ret3);
|
20704
20704
|
}
|
20705
|
-
function
|
20705
|
+
function addi3(dst, lhs, rhs) {
|
20706
20706
|
const ret3 = wasm$1.addi(dst, lhs, rhs);
|
20707
20707
|
return Instruction.__wrap(ret3);
|
20708
20708
|
}
|
@@ -20710,7 +20710,7 @@ spurious results.`);
|
|
20710
20710
|
const ret3 = wasm$1.andi(dst, lhs, rhs);
|
20711
20711
|
return Instruction.__wrap(ret3);
|
20712
20712
|
}
|
20713
|
-
function
|
20713
|
+
function divi2(dst, lhs, rhs) {
|
20714
20714
|
const ret3 = wasm$1.divi(dst, lhs, rhs);
|
20715
20715
|
return Instruction.__wrap(ret3);
|
20716
20716
|
}
|
@@ -20754,7 +20754,7 @@ spurious results.`);
|
|
20754
20754
|
const ret3 = wasm$1.lb(dst, addr, offset);
|
20755
20755
|
return Instruction.__wrap(ret3);
|
20756
20756
|
}
|
20757
|
-
function
|
20757
|
+
function lw3(dst, addr, offset) {
|
20758
20758
|
const ret3 = wasm$1.lw(dst, addr, offset);
|
20759
20759
|
return Instruction.__wrap(ret3);
|
20760
20760
|
}
|
@@ -20910,7 +20910,7 @@ spurious results.`);
|
|
20910
20910
|
const ret3 = wasm$1.ecal(a, b, c, d);
|
20911
20911
|
return Instruction.__wrap(ret3);
|
20912
20912
|
}
|
20913
|
-
function
|
20913
|
+
function bsiz2(dst, blob_id_ptr) {
|
20914
20914
|
const ret3 = wasm$1.bsiz(dst, blob_id_ptr);
|
20915
20915
|
return Instruction.__wrap(ret3);
|
20916
20916
|
}
|
@@ -20929,75 +20929,6 @@ spurious results.`);
|
|
20929
20929
|
ptr = ptr >>> 0;
|
20930
20930
|
return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
|
20931
20931
|
}
|
20932
|
-
var CompareMode = Object.freeze({
|
20933
|
-
/**
|
20934
|
-
* Equality (`==`)
|
20935
|
-
*/
|
20936
|
-
EQ: 0,
|
20937
|
-
"0": "EQ",
|
20938
|
-
/**
|
20939
|
-
* Inequality (`!=`)
|
20940
|
-
*/
|
20941
|
-
NE: 1,
|
20942
|
-
"1": "NE",
|
20943
|
-
/**
|
20944
|
-
* Less than (`<`)
|
20945
|
-
*/
|
20946
|
-
LT: 2,
|
20947
|
-
"2": "LT",
|
20948
|
-
/**
|
20949
|
-
* Greater than (`>`)
|
20950
|
-
*/
|
20951
|
-
GT: 3,
|
20952
|
-
"3": "GT",
|
20953
|
-
/**
|
20954
|
-
* Less than or equals (`>=`)
|
20955
|
-
*/
|
20956
|
-
LTE: 4,
|
20957
|
-
"4": "LTE",
|
20958
|
-
/**
|
20959
|
-
* Greater than or equals (`>=`)
|
20960
|
-
*/
|
20961
|
-
GTE: 5,
|
20962
|
-
"5": "GTE",
|
20963
|
-
/**
|
20964
|
-
* Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
|
20965
|
-
*/
|
20966
|
-
LZC: 6,
|
20967
|
-
"6": "LZC"
|
20968
|
-
});
|
20969
|
-
var GMArgs = Object.freeze({
|
20970
|
-
/**
|
20971
|
-
*r" Get if caller is external.
|
20972
|
-
*/
|
20973
|
-
IsCallerExternal: 1,
|
20974
|
-
"1": "IsCallerExternal",
|
20975
|
-
/**
|
20976
|
-
*r" Get caller's contract ID.
|
20977
|
-
*/
|
20978
|
-
GetCaller: 2,
|
20979
|
-
"2": "GetCaller",
|
20980
|
-
/**
|
20981
|
-
*r" Get index of current predicate.
|
20982
|
-
*/
|
20983
|
-
GetVerifyingPredicate: 3,
|
20984
|
-
"3": "GetVerifyingPredicate",
|
20985
|
-
/**
|
20986
|
-
*r" Get the Chain ID this VM is operating within
|
20987
|
-
*/
|
20988
|
-
GetChainId: 4,
|
20989
|
-
"4": "GetChainId",
|
20990
|
-
/**
|
20991
|
-
*r" Get memory address where the transaction is located
|
20992
|
-
*/
|
20993
|
-
TxStart: 5,
|
20994
|
-
"5": "TxStart",
|
20995
|
-
/**
|
20996
|
-
*r" Get memory address of base asset ID
|
20997
|
-
*/
|
20998
|
-
BaseAssetId: 6,
|
20999
|
-
"6": "BaseAssetId"
|
21000
|
-
});
|
21001
20932
|
var GTFArgs2 = Object.freeze({
|
21002
20933
|
/**
|
21003
20934
|
*r" Set `$rA` to `tx.type`
|
@@ -21325,47 +21256,42 @@ spurious results.`);
|
|
21325
21256
|
PolicyMaxFee: 1284,
|
21326
21257
|
"1284": "PolicyMaxFee"
|
21327
21258
|
});
|
21328
|
-
var
|
21329
|
-
/**
|
21330
|
-
* Add
|
21331
|
-
*/
|
21332
|
-
ADD: 0,
|
21333
|
-
"0": "ADD",
|
21259
|
+
var CompareMode = Object.freeze({
|
21334
21260
|
/**
|
21335
|
-
*
|
21261
|
+
* Equality (`==`)
|
21336
21262
|
*/
|
21337
|
-
|
21338
|
-
"
|
21263
|
+
EQ: 0,
|
21264
|
+
"0": "EQ",
|
21339
21265
|
/**
|
21340
|
-
*
|
21266
|
+
* Inequality (`!=`)
|
21341
21267
|
*/
|
21342
|
-
|
21343
|
-
"
|
21268
|
+
NE: 1,
|
21269
|
+
"1": "NE",
|
21344
21270
|
/**
|
21345
|
-
*
|
21271
|
+
* Less than (`<`)
|
21346
21272
|
*/
|
21347
|
-
|
21348
|
-
"
|
21273
|
+
LT: 2,
|
21274
|
+
"2": "LT",
|
21349
21275
|
/**
|
21350
|
-
*
|
21276
|
+
* Greater than (`>`)
|
21351
21277
|
*/
|
21352
|
-
|
21353
|
-
"
|
21278
|
+
GT: 3,
|
21279
|
+
"3": "GT",
|
21354
21280
|
/**
|
21355
|
-
*
|
21281
|
+
* Less than or equals (`>=`)
|
21356
21282
|
*/
|
21357
|
-
|
21358
|
-
"
|
21283
|
+
LTE: 4,
|
21284
|
+
"4": "LTE",
|
21359
21285
|
/**
|
21360
|
-
*
|
21286
|
+
* Greater than or equals (`>=`)
|
21361
21287
|
*/
|
21362
|
-
|
21363
|
-
"
|
21288
|
+
GTE: 5,
|
21289
|
+
"5": "GTE",
|
21364
21290
|
/**
|
21365
|
-
*
|
21291
|
+
* Number of leading zeroes in lhs (`lzcnt`) (discards rhs)
|
21366
21292
|
*/
|
21367
|
-
|
21368
|
-
"
|
21293
|
+
LZC: 6,
|
21294
|
+
"6": "LZC"
|
21369
21295
|
});
|
21370
21296
|
var PanicReason = Object.freeze({
|
21371
21297
|
/**
|
@@ -21661,6 +21587,80 @@ spurious results.`);
|
|
21661
21587
|
GasCostNotDefined: 56,
|
21662
21588
|
"56": "GasCostNotDefined"
|
21663
21589
|
});
|
21590
|
+
var MathOp = Object.freeze({
|
21591
|
+
/**
|
21592
|
+
* Add
|
21593
|
+
*/
|
21594
|
+
ADD: 0,
|
21595
|
+
"0": "ADD",
|
21596
|
+
/**
|
21597
|
+
* Subtract
|
21598
|
+
*/
|
21599
|
+
SUB: 1,
|
21600
|
+
"1": "SUB",
|
21601
|
+
/**
|
21602
|
+
* Invert bits (discards rhs)
|
21603
|
+
*/
|
21604
|
+
NOT: 2,
|
21605
|
+
"2": "NOT",
|
21606
|
+
/**
|
21607
|
+
* Bitwise or
|
21608
|
+
*/
|
21609
|
+
OR: 3,
|
21610
|
+
"3": "OR",
|
21611
|
+
/**
|
21612
|
+
* Bitwise exclusive or
|
21613
|
+
*/
|
21614
|
+
XOR: 4,
|
21615
|
+
"4": "XOR",
|
21616
|
+
/**
|
21617
|
+
* Bitwise and
|
21618
|
+
*/
|
21619
|
+
AND: 5,
|
21620
|
+
"5": "AND",
|
21621
|
+
/**
|
21622
|
+
* Shift left
|
21623
|
+
*/
|
21624
|
+
SHL: 6,
|
21625
|
+
"6": "SHL",
|
21626
|
+
/**
|
21627
|
+
* Shift right
|
21628
|
+
*/
|
21629
|
+
SHR: 7,
|
21630
|
+
"7": "SHR"
|
21631
|
+
});
|
21632
|
+
var GMArgs = Object.freeze({
|
21633
|
+
/**
|
21634
|
+
*r" Get if caller is external.
|
21635
|
+
*/
|
21636
|
+
IsCallerExternal: 1,
|
21637
|
+
"1": "IsCallerExternal",
|
21638
|
+
/**
|
21639
|
+
*r" Get caller's contract ID.
|
21640
|
+
*/
|
21641
|
+
GetCaller: 2,
|
21642
|
+
"2": "GetCaller",
|
21643
|
+
/**
|
21644
|
+
*r" Get index of current predicate.
|
21645
|
+
*/
|
21646
|
+
GetVerifyingPredicate: 3,
|
21647
|
+
"3": "GetVerifyingPredicate",
|
21648
|
+
/**
|
21649
|
+
*r" Get the Chain ID this VM is operating within
|
21650
|
+
*/
|
21651
|
+
GetChainId: 4,
|
21652
|
+
"4": "GetChainId",
|
21653
|
+
/**
|
21654
|
+
*r" Get memory address where the transaction is located
|
21655
|
+
*/
|
21656
|
+
TxStart: 5,
|
21657
|
+
"5": "TxStart",
|
21658
|
+
/**
|
21659
|
+
*r" Get memory address of base asset ID
|
21660
|
+
*/
|
21661
|
+
BaseAssetId: 6,
|
21662
|
+
"6": "BaseAssetId"
|
21663
|
+
});
|
21664
21664
|
var ADDFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
|
21665
21665
|
}, unregister: () => {
|
21666
21666
|
} } : new FinalizationRegistry((ptr) => wasm$1.__wbg_add_free(ptr >>> 0, 1));
|
@@ -28658,7 +28658,7 @@ spurious results.`);
|
|
28658
28658
|
}
|
28659
28659
|
}
|
28660
28660
|
function wasm(imports) {
|
28661
|
-
return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3RpbWVfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgPX193YmdfcG9wbF9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puemJfZnJlZQAYDl9fd2JnX3Nyd19mcmVlABgPX193Ymdfd3FtbF9mcmVlABgPX193YmdfazI1Nl9mcmVlABgNX193YmdfbGJfZnJlZQAYD19fd2JnX2puZWJfZnJlZQAYD19fd2JnX3JldGRfZnJlZQAYD19fd2JnX2V4cGlfZnJlZQAYD19fd2JnX3N3d3FfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgOX193YmdfbGRjX2ZyZWUAGA9fX3diZ19tbG9nX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA1fX3diZ19lcV9mcmVlABgPX193YmdfbWNsaV9mcmVlABgPX193YmdfeG9yaV9mcmVlABgPX193YmdfYW5kaV9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193Ymdfc3ViaV9mcmVlABgNX193Ymdfb3JfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX3dkbWRfZnJlZQAYDV9fd2JnX2dtX2ZyZWUAGA5fX3diZ19zcmxfZnJlZQAYD19fd2JnX3NybGlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX3dkYW1fZnJlZQAYD19fd2JnX21vZGlfZnJlZQAYD19fd2JnX3dxYW1fZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2Nmc19mcmVlABgPX193Ymdfam5laV9mcmVlABgPX193YmdfczI1Nl9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbW9kX2ZyZWUAGA9fX3diZ19zY3dxX2ZyZWUAGA5fX3diZ19hbmRfZnJlZQAYDl9fd2JnX3Ryb19mcmVlABgPX193Ymdfc3J3cV9mcmVlABgPX193YmdfcG9waF9mcmVlABgOX193Ymdfc3d3X2ZyZWUAGA9fX3diZ193ZGR2X2ZyZWUAGA5fX3diZ19tY3BfZnJlZQAYDV9fd2JnX3NiX2ZyZWUAGA9fX3diZ19lY2FsX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYD19fd2JnX2Fsb2NfZnJlZQAYD19fd2JnX2puemZfZnJlZQAYD19fd2JnX2NhbGxfZnJlZQAYD19fd2JnX3J2cnRfZnJlZQAYD19fd2JnX3dxbW1fZnJlZQAYD19fd2JnX21vdmlfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX2JoZWlfZnJlZQAYDl9fd2JnX2NmZV9mcmVlABgPX193Ymdfc2xsaV9mcmVlABgPX193YmdfbWludF9mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfZGl2X2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ193cWR2X2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA5fX3diZ19iYWxfZnJlZQAYDl9fd2JnX2V4cF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA9fX3diZ19qbmVmX2ZyZWUAGA9fX3diZ19tb3ZlX2ZyZWUAGA9fX3diZ19jZnNpX2ZyZWUAGA5fX3diZ19jY3BfZnJlZQAYD19fd2JnX2VkMTlfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYWRkaV9mcmVlABgOX193YmdfcmV0X2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193Ymdfd2RvcF9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfd3FjbV9mcmVlABgNX193YmdfY2JfZnJlZQAYD19fd2JnX2J1cm5fZnJlZQAYD19fd2JnX3dkbW1fZnJlZQAYDl9fd2JnX2d0Zl9mcmVlABgNX193Ymdfc3dfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ19jc2l6X2ZyZWUAGA1fX3diZ19ndF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA9fX3diZ19jZmVpX2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA5fX3diZ19tZXFfZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21yb29fZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX3RyX2ZyZWUAGA5fX3diZ194b3JfZnJlZQAYDV9fd2JnX2x3X2ZyZWUAGA5fX3diZ19sb2dfZnJlZQAYD19fd2JnX2ptcGZfZnJlZQAYDl9fd2JnX25vdF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGcLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBnCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAg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bmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
|
28661
|
+
return _loadWasmModule(1, null, "AGFzbQEAAAABOgpgA39/fwF/YAF/AX9gBH9/f38Bf2ACf38AYAJ/fwF/YAABf2AFf39/f38Bf2ABfwBgA39/fwBgAAACGAEDd2JnEF9fd2JpbmRnZW5fdGhyb3cAAwP/Af0BAQEDAwMDAwMBAQMDAQEBAwMBAQEEAQMDAwEBAwEBAQQCAQMCAgICAgIDAwMEBAQEBAQEBAEBAQMDAAICBAQEBAQEBAQEBAABAQgDAwQBAQEBAQEBAgcDAQAAAQEDBwcBAwEDAgIBAQEAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQUBAQEBBAAEAQYCAgMDAAIABwEIBAEEAQkDAQEHAQUFBQUFBQUFBQUFBQUFBQUFBQUDBgYCAgQCBgYAAAgABAUDAQARBgkBfwFBgIDAAAsHjUzPBQZtZW1vcnkCABZfX3diZ19jb21wYXJlYXJnc19mcmVlABAaX193YmdfZ2V0X2NvbXBhcmVhcmdzX21vZGUASBpfX3diZ19zZXRfY29tcGFyZWFyZ3NfbW9kZQA4Il9fd2JnX2dldF9jb21wYXJlYXJnc19pbmRpcmVjdF9yaHMASSJfX3diZ19zZXRfY29tcGFyZWFyZ3NfaW5kaXJlY3RfcmhzAEsSY29tcGFyZWFyZ3NfdG9faW1tAFgUY29tcGFyZWFyZ3NfZnJvbV9pbW0AHxVfX3diZ19nZXRfbWF0aGFyZ3Nfb3AASBVfX3diZ19zZXRfbWF0aGFyZ3Nfb3AAORJfX3diZ19tdWxhcmdzX2ZyZWUAER5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMASB5fX3diZ19zZXRfbXVsYXJnc19pbmRpcmVjdF9yaHMATBJfX3diZ19kaXZhcmdzX2ZyZWUAIx5fX3diZ19nZXRfZGl2YXJnc19pbmRpcmVjdF9yaHMAuQEeX193Ymdfc2V0X2RpdmFyZ3NfaW5kaXJlY3RfcmhzAGMbX193YmdfcGFuaWNpbnN0cnVjdGlvbl9mcmVlABchcGFuaWNpbnN0cnVjdGlvbl9lcnJvcl90eXBlc2NyaXB0AE0XcGFuaWNpbnN0cnVjdGlvbl9yZWFzb24AWxxwYW5pY2luc3RydWN0aW9uX2luc3RydWN0aW9uAFwMZ21fZnJvbV9hcmdzANUBDWd0Zl9mcm9tX2FyZ3MAzQEHZ21fYXJncwCIAQhndGZfYXJncwBpDndkY21fZnJvbV9hcmdzADsOd2RvcF9mcm9tX2FyZ3MAOw53ZG1sX2Zyb21fYXJncwA8DndkZHZfZnJvbV9hcmdzAMkBCXdkY21fYXJncwAkCXdxY21fYXJncwAlCXdkb3BfYXJncwAmCXdxb3BfYXJncwAnCXdkbWxfYXJncwAoCXdxbWxfYXJncwApCXdkZHZfYXJncwBkCXdxZHZfYXJncwBlEF9fd2JnX2ltbTA2X2ZyZWUAKhBfX3diZ19pbW0xMl9mcmVlACsQX193YmdfaW1tMThfZnJlZQAsDl9fd2JnX2FkZF9mcmVlABgPX193Ymdfbm9vcF9mcmVlAAcSYWRkX25ld190eXBlc2NyaXB0AFkGYWRkX3JhADUGYWRkX3JiABIGYWRkX3JjABoDYWRkAMUBA2FuZACKAQNkaXYAiwECZXEAjAEDZXhwAI0BAmd0AI4BAmx0AI8BBG1sb2cAkAEEbXJvbwCRAQRtb2RfAJIBBW1vdmVfAD0DbXVsAJMBA25vdAA+Am9yAJQBA3NsbACVAQNzcmwAlgEDc3ViAJcBA3hvcgCYAQRtbGR2AGoDcmV0ALoBBHJldGQAPxNhbG9jX25ld190eXBlc2NyaXB0AGAHYWxvY19yYQAiBGFsb2MAuwEDbWNsAEADbWNwAJkBA21lcQBrE2Joc2hfbmV3X3R5cGVzY3JpcHQAIARiaHNoAC0EYmhlaQC8AQRidXJuAEEEY2FsbABsA2NjcABtBGNyb28AQgRjc2l6AEMCY2IAvQEDbGRjAG4DbG9nAG8EbG9nZABwBG1pbnQARARydnJ0AL4BBHNjd3EAmgEDc3J3AJsBBHNyd3EAcQNzd3cAnAEEc3d3cQByAnRyAJ0BA3RybwBzBGVjazEAngEEZWNyMQCfAQRlZDE5AHQEazI1NgCgAQRzMjU2AKEBBHRpbWUARRNub29wX25ld190eXBlc2NyaXB0AL8BBG5vb3AA3QEEZmxhZwDAAQNiYWwAogEDam1wAMEBA2puZQCjAQNzbW8AdRNhZGRpX25ld190eXBlc2NyaXB0AFoKYWRkaV9pbW0xMgAJBGFkZGkApAEEYW5kaQClAQRkaXZpAKYBBGV4cGkApwEEbW9kaQCoAQRtdWxpAKkBA29yaQCqAQRzbGxpAKsBBHNybGkArAEEc3ViaQCtAQR4b3JpAK4BBGpuZWkArwECbGIAsAECbHcAsQECc2IAsgECc3cAswEEbWNwaQC0ARJndGZfbmV3X3R5cGVzY3JpcHQAzwEDZ3RmALUBBG1jbGkALhFnbV9uZXdfdHlwZXNjcmlwdABGCGdtX2ltbTE4AA0CZ20ALwRtb3ZpADAEam56aQAxBGptcGYAMhNqbXBiX25ld190eXBlc2NyaXB0ABUEam1wYgAzBGpuemYAtgEEam56YgC3AQRqbmVmAHYKam5lYl9pbW0wNgA2BGpuZWIAdwJqaQBOE2NmZWlfbmV3X3R5cGVzY3JpcHQANwpjZmVpX2ltbTI0AAoEY2ZlaQBPBGNmc2kAUANjZmUAwgEDY2ZzAMMBBHBzaGwAUQRwc2hoAFIEcG9wbABTBHBvcGgAVBN3ZGNtX25ld190eXBlc2NyaXB0AMoBBHdkY20AeAR3cWNtAHkEd2RvcAB6BHdxb3AAewR3ZG1sAHwEd3FtbAB9BHdkZHYAfgR3cWR2AH8Ed2RtZACAAQR3cW1kAIEBBHdkYW0AggEEd3FhbQCDAQR3ZG1tAIQBBHdxbW0AhQEEZWNhbACGAQRic2l6ADQTYmxkZF9uZXdfdHlwZXNjcmlwdABVB2JsZGRfcmQANgRibGRkAIcBFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUADBRpbnN0cnVjdGlvbl90b19ieXRlcwAGEGluc3RydWN0aW9uX3NpemUA7wERcmVnaWRfbmV3X2NoZWNrZWQAuAEJcmVnaWRfYmFsAN4BCnJlZ2lkX2NnYXMA3wEJcmVnaWRfZXJyAOABCnJlZ2lkX2ZsYWcA4QEIcmVnaWRfZnAA4gEKcmVnaWRfZ2dhcwDjAQhyZWdpZF9ocADkAQhyZWdpZF9pcwDlAQhyZWdpZF9vZgDmAQlyZWdpZF9vbmUA5wEIcmVnaWRfcGMA6AEJcmVnaWRfcmV0AOkBCnJlZ2lkX3JldGwA6gEIcmVnaWRfc3AA6wEJcmVnaWRfc3BwAOwBDnJlZ2lkX3dyaXRhYmxlAO0BCnJlZ2lkX3plcm8A7gEUcmVnaWRfbmV3X3R5cGVzY3JpcHQA2QELcmVnaWRfdG9fdTgA2gESYW5kX25ld190eXBlc2NyaXB0AFkSZGl2X25ld190eXBlc2NyaXB0AFkRZXFfbmV3X3R5cGVzY3JpcHQAWRJleHBfbmV3X3R5cGVzY3JpcHQAWRFndF9uZXdfdHlwZXNjcmlwdABZEWx0X25ld190eXBlc2NyaXB0AFkTbWxvZ19uZXdfdHlwZXNjcmlwdABZE21yb29fbmV3X3R5cGVzY3JpcHQAWRJtb2RfbmV3X3R5cGVzY3JpcHQAWRJtdWxfbmV3X3R5cGVzY3JpcHQAWRFvcl9uZXdfdHlwZXNjcmlwdABZEnNsbF9uZXdfdHlwZXNjcmlwdABZEnNybF9uZXdfdHlwZXNjcmlwdABZEnN1Yl9uZXdfdHlwZXNjcmlwdABZEnhvcl9uZXdfdHlwZXNjcmlwdABZEm1jcF9uZXdfdHlwZXNjcmlwdABZE3Njd3FfbmV3X3R5cGVzY3JpcHQAWRJzcndfbmV3X3R5cGVzY3JpcHQAWRJzd3dfbmV3X3R5cGVzY3JpcHQAWRF0cl9uZXdfdHlwZXNjcmlwdABZE2VjazFfbmV3X3R5cGVzY3JpcHQAWRNlY3IxX25ld190eXBlc2NyaXB0AFkTazI1Nl9uZXdfdHlwZXNjcmlwdABZE3MyNTZfbmV3X3R5cGVzY3JpcHQAWRJiYWxfbmV3X3R5cGVzY3JpcHQAWRJqbmVfbmV3X3R5cGVzY3JpcHQAWRNhbmRpX25ld190eXBlc2NyaXB0AFoTZGl2aV9uZXdfdHlwZXNjcmlwdABaE2V4cGlfbmV3X3R5cGVzY3JpcHQAWhNtb2RpX25ld190eXBlc2NyaXB0AFoTbXVsaV9uZXdfdHlwZXNjcmlwdABaEm9yaV9uZXdfdHlwZXNjcmlwdABaE3NsbGlfbmV3X3R5cGVzY3JpcHQAWhNzcmxpX25ld190eXBlc2NyaXB0AFoTc3ViaV9uZXdfdHlwZXNjcmlwdABaE3hvcmlfbmV3X3R5cGVzY3JpcHQAWhNqbmVpX25ld190eXBlc2NyaXB0AFoRbGJfbmV3X3R5cGVzY3JpcHQAWhFsd19uZXdfdHlwZXNjcmlwdABaEXNiX25ld190eXBlc2NyaXB0AFoRc3dfbmV3X3R5cGVzY3JpcHQAWhNtY3BpX25ld190eXBlc2NyaXB0AFoTam56Zl9uZXdfdHlwZXNjcmlwdABaE2puemJfbmV3X3R5cGVzY3JpcHQAWhFqaV9uZXdfdHlwZXNjcmlwdAA3E2Nmc2lfbmV3X3R5cGVzY3JpcHQANxNwc2hsX25ld190eXBlc2NyaXB0ADcTcHNoaF9uZXdfdHlwZXNjcmlwdAA3E3BvcGxfbmV3X3R5cGVzY3JpcHQANxNwb3BoX25ld190eXBlc2NyaXB0ADcTbW92aV9uZXdfdHlwZXNjcmlwdAAVE21jbGlfbmV3X3R5cGVzY3JpcHQAFRNqbnppX25ld190eXBlc2NyaXB0ABUTam1wZl9uZXdfdHlwZXNjcmlwdAAVEm5vdF9uZXdfdHlwZXNjcmlwdAAgE3JldGRfbmV3X3R5cGVzY3JpcHQAIBNtb3ZlX25ld190eXBlc2NyaXB0ACASbWNsX25ld190eXBlc2NyaXB0ACATYnVybl9uZXdfdHlwZXNjcmlwdAAgE2Nyb29fbmV3X3R5cGVzY3JpcHQAIBNjc2l6X25ld190eXBlc2NyaXB0ACATbWludF9uZXdfdHlwZXNjcmlwdAAgE3RpbWVfbmV3X3R5cGVzY3JpcHQAIBNic2l6X25ld190eXBlc2NyaXB0ACAGcmV0X3JhACIHYmhlaV9yYQAiBWNiX3JhACIHcnZydF9yYQAiB2ZsYWdfcmEAIgZqbXBfcmEAIghqaV9pbW0yNAAKCmNmc2lfaW1tMjQACgZjZmVfcmEAIgZjZnNfcmEAIgpwc2hsX2ltbTI0AAoKcHNoaF9pbW0yNAAKCnBvcGxfaW1tMjQACgpwb3BoX2ltbTI0AAoTbWxkdl9uZXdfdHlwZXNjcmlwdABVEm1lcV9uZXdfdHlwZXNjcmlwdABVEmNjcF9uZXdfdHlwZXNjcmlwdABVEmxvZ19uZXdfdHlwZXNjcmlwdABVE2xvZ2RfbmV3X3R5cGVzY3JpcHQAVRNzcndxX25ld190eXBlc2NyaXB0AFUTc3d3cV9uZXdfdHlwZXNjcmlwdABVEnRyb19uZXdfdHlwZXNjcmlwdABVE2VkMTlfbmV3X3R5cGVzY3JpcHQAVRJzbW9fbmV3X3R5cGVzY3JpcHQAVRJsZGNfbmV3X3R5cGVzY3JpcHQAVRNqbmVmX25ld190eXBlc2NyaXB0AFUTd2RtZF9uZXdfdHlwZXNjcmlwdABVE3dxbWRfbmV3X3R5cGVzY3JpcHQAVRN3ZGFtX25ld190eXBlc2NyaXB0AFUTd3FhbV9uZXdfdHlwZXNjcmlwdABVE3dkbW1fbmV3X3R5cGVzY3JpcHQAVRN3cW1tX25ld190eXBlc2NyaXB0AFUTZWNhbF9uZXdfdHlwZXNjcmlwdABVE2NhbGxfbmV3X3R5cGVzY3JpcHQAVRNfX3diZ19tYXRoYXJnc19mcmVlABAfX193Ymdfc2V0X21hdGhhcmdzX2luZGlyZWN0X3JocwBLHl9fd2JnX3NldF9tdWxhcmdzX2luZGlyZWN0X2xocwBLH19fd2JnX2dldF9tYXRoYXJnc19pbmRpcmVjdF9yaHMASR5fX3diZ19nZXRfbXVsYXJnc19pbmRpcmVjdF9saHMASRJyZXRfbmV3X3R5cGVzY3JpcHQAYBNiaGVpX25ld190eXBlc2NyaXB0AGARY2JfbmV3X3R5cGVzY3JpcHQAYBNydnJ0X25ld190eXBlc2NyaXB0AGATZmxhZ19uZXdfdHlwZXNjcmlwdABgEmptcF9uZXdfdHlwZXNjcmlwdABgEmNmZV9uZXdfdHlwZXNjcmlwdABgEmNmc19uZXdfdHlwZXNjcmlwdABgD19fd2JnX3dkb3BfZnJlZQAYDl9fd2JnX21vZF9mcmVlABgPX193Ymdfd3Fkdl9mcmVlABgNX193Ymdfc2JfZnJlZQAYDl9fd2JnX3Ntb19mcmVlABgPX193YmdfcHNobF9mcmVlABgOX193YmdfbG9nX2ZyZWUAGA9fX3diZ193cWFtX2ZyZWUAGA9fX3diZ193cW1sX2ZyZWUAGA5fX3diZ19ub3RfZnJlZQAYD19fd2JnX2puemlfZnJlZQAYD19fd2JnX2puZWlfZnJlZQAYD19fd2JnX3N1YmlfZnJlZQAYD19fd2JnX2ZsYWdfZnJlZQAYD19fd2JnX2NzaXpfZnJlZQAYD19fd2JnX3Nyd3FfZnJlZQAYD19fd2JnX3NsbGlfZnJlZQAYD19fd2JnX2ptcGJfZnJlZQAYD19fd2JnX3dkbWxfZnJlZQAYD19fd2JnX3MyNTZfZnJlZQAYDl9fd2JnX3hvcl9mcmVlABgOX193YmdfY2ZlX2ZyZWUAGA1fX3diZ19ndF9mcmVlABgPX193YmdfcHNoaF9mcmVlABgPX193YmdfbWNsaV9mcmVlABgNX193YmdfbHRfZnJlZQAYD19fd2JnX2puZWZfZnJlZQAYDV9fd2JnX3N3X2ZyZWUAGA9fX3diZ19zcmxpX2ZyZWUAGA9fX3diZ19idXJuX2ZyZWUAGA9fX3diZ19ic2l6X2ZyZWUAGA9fX3diZ19ydnJ0X2ZyZWUAGA9fX3diZ194b3JpX2ZyZWUAGA9fX3diZ19tdWxpX2ZyZWUAGA1fX3diZ19sYl9mcmVlABgNX193YmdfZ21fZnJlZQAYD19fd2JnX2Joc2hfZnJlZQAYDV9fd2JnX2VxX2ZyZWUAGA5fX3diZ19zbGxfZnJlZQAYDl9fd2JnX29yaV9mcmVlABgPX193YmdfZWQxOV9mcmVlABgPX193YmdfY2ZlaV9mcmVlABgPX193YmdfY2ZzaV9mcmVlABgPX193Ymdfam56Yl9mcmVlABgPX193YmdfYWxvY19mcmVlABgOX193Ymdfc3JsX2ZyZWUAGA9fX3diZ19tcm9vX2ZyZWUAGA5fX3diZ19jZnNfZnJlZQAYDl9fd2JnX2ptcF9mcmVlABgPX193YmdfYmhlaV9mcmVlABgPX193YmdfbG9nZF9mcmVlABgPX193Ymdfam5lYl9mcmVlABgPX193Ymdfd3FtbV9mcmVlABgPX193YmdfcG9waF9mcmVlABgPX193Ymdfd2RjbV9mcmVlABgPX193YmdfZXhwaV9mcmVlABgPX193YmdfYWRkaV9mcmVlABgPX193YmdfYmxkZF9mcmVlABgOX193YmdfbGRjX2ZyZWUAGA5fX3diZ19kaXZfZnJlZQAYD19fd2JnX3dkZHZfZnJlZQAYD19fd2JnX21sZHZfZnJlZQAYDl9fd2JnX21jbF9mcmVlABgOX193YmdfbXVsX2ZyZWUAGA9fX3diZ193ZGFtX2ZyZWUAGA9fX3diZ19jYWxsX2ZyZWUAGA1fX3diZ19sd19mcmVlABgPX193YmdfZWNhbF9mcmVlABgPX193YmdfbWxvZ19mcmVlABgPX193YmdfcmV0ZF9mcmVlABgPX193YmdfdGltZV9mcmVlABgOX193YmdfZ3RmX2ZyZWUAGA5fX3diZ19qbmVfZnJlZQAYDV9fd2JnX29yX2ZyZWUAGA9fX3diZ19kaXZpX2ZyZWUAGA9fX3diZ19qbnpmX2ZyZWUAGA5fX3diZ190cm9fZnJlZQAYDl9fd2JnX21jcF9mcmVlABgPX193YmdfbWludF9mcmVlABgOX193Ymdfc3ViX2ZyZWUAGA1fX3diZ19jYl9mcmVlABgPX193Ymdfd3FvcF9mcmVlABgOX193Ymdfc3J3X2ZyZWUAGA9fX3diZ19lY3IxX2ZyZWUAGA9fX3diZ19qbXBmX2ZyZWUAGA9fX3diZ19rMjU2X2ZyZWUAGA5fX3diZ19yZXRfZnJlZQAYD19fd2JnX3Njd3FfZnJlZQAYDl9fd2JnX21lcV9mcmVlABgPX193Ymdfc3d3cV9mcmVlABgOX193YmdfYmFsX2ZyZWUAGA9fX3diZ19tb3ZpX2ZyZWUAGA9fX3diZ193ZG1kX2ZyZWUAGA9fX3diZ19wb3BsX2ZyZWUAGA9fX3diZ193ZG1tX2ZyZWUAGA5fX3diZ19leHBfZnJlZQAYDV9fd2JnX2ppX2ZyZWUAGA9fX3diZ193cWNtX2ZyZWUAGA9fX3diZ19tY3BpX2ZyZWUAGA9fX3diZ19tb2RpX2ZyZWUAGA1fX3diZ190cl9mcmVlABgPX193YmdfYW5kaV9mcmVlABgOX193YmdfY2NwX2ZyZWUAGA5fX3diZ19zd3dfZnJlZQAYD19fd2JnX2Nyb29fZnJlZQAYD19fd2JnX3dxbWRfZnJlZQAYD19fd2JnX21vdmVfZnJlZQAYD19fd2JnX2VjazFfZnJlZQAYDl9fd2JnX2FuZF9mcmVlABgTd3Fkdl9uZXdfdHlwZXNjcmlwdADKARN3cW1sX25ld190eXBlc2NyaXB0AMoBE3dkbWxfbmV3X3R5cGVzY3JpcHQAygETd3FvcF9uZXdfdHlwZXNjcmlwdADKARN3ZG9wX25ld190eXBlc2NyaXB0AMoBE3dxY21fbmV3X3R5cGVzY3JpcHQAygETd2Rkdl9uZXdfdHlwZXNjcmlwdADKAQ53cWNtX2Zyb21fYXJncwA7CndxZHZfaW1tMDYANgp3cW1sX2ltbTA2ADYKd2RtbF9pbW0wNgA2Cndxb3BfaW1tMDYANgp3ZG9wX2ltbTA2ADYKd3FjbV9pbW0wNgA2CndkZHZfaW1tMDYANgp3ZGNtX2ltbTA2ADYKam5lZl9pbW0wNgA2CWxkY19pbW0wNgA2DndxbWxfZnJvbV9hcmdzADwOd3FvcF9mcm9tX2FyZ3MAOwVnbV9yYQA1BWd0X3JjABoFZ3RfcmIAEgVndF9yYQA1BWxiX3JiABIFbGJfcmEANQVsdF9yYwAaBWx0X3JiABIFbHRfcmEANQhsd19pbW0xMgAJBWx3X3JiABIFbHdfcmEANQVvcl9yYwAaBW9yX3JiABIFb3JfcmEANQhzYl9pbW0xMgAJBXNiX3JiABIFc2JfcmEANQhzd19pbW0xMgAJBXN3X3JiABIFc3dfcmEANQV0cl9yYwAaBXRyX3JiABIFdHJfcmEANQVlcV9yYwAaBWVxX3JiABIFZXFfcmEANQZhbmRfcmMAGgZhbmRfcmIAEgZhbmRfcmEANQZiYWxfcmMAGgZiYWxfcmIAEgZiYWxfcmEANQZjY3BfcmMAGgZjY3BfcmIAEgZjY3BfcmEANQZkaXZfcmMAGgZkaXZfcmIAEgZkaXZfcmEANQZleHBfcmMAGgZleHBfcmIAEgZleHBfcmEANQhsYl9pbW0xMgAJBmd0Zl9yYgASBmd0Zl9yYQA1BmpuZV9yYwAaBmpuZV9yYgASBmpuZV9yYQA1BmxkY19yYwAaBmxkY19yYgASBmxkY19yYQA1BmxvZ19yZAA2BmxvZ19yYwAaBmxvZ19yYgASBmxvZ19yYQA1Bm1jbF9yYgASBm1jbF9yYQA1Bm1jcF9yYwAaBm1jcF9yYgASBm1jcF9yYQA1Bm1lcV9yZAA2Bm1lcV9yYwAaBm1lcV9yYgASBm1lcV9yYQA1Bm1vZF9yYwAaBm1vZF9yYgASBm1vZF9yYQA1Bm11bF9yYwAaBm11bF9yYgASBm11bF9yYQA1Bm5vdF9yYgASBm5vdF9yYQA1CW9yaV9pbW0xMgAJBm9yaV9yYgASBm9yaV9yYQA1BnNsbF9yYwAaBnNsbF9yYgASBnNsbF9yYQA1BnNtb19yZAA2BnNtb19yYwAaBnNtb19yYgASBnNtb19yYQA1BnNybF9yYwAaBnNybF9yYgASBnNybF9yYQA1BnNyd19yYwAaBnNyd19yYgASBnNyd19yYQA1BnN1Yl9yYwAaBnN1Yl9yYgASBnN1Yl9yYQA1BnN3d19yYwAaBnN3d19yYgASBnN3d19yYQA1BnRyb19yZAA2BnRyb19yYwAaBnRyb19yYgASBnRyb19yYQA1Bnhvcl9yYwAaBnhvcl9yYgASBnhvcl9yYQA1CWd0Zl9pbW0xMgAJB2FkZGlfcmIAEgdhZGRpX3JhADUKYW5kaV9pbW0xMgAJB2FuZGlfcmIAEgdhbmRpX3JhADUHYmhzaF9yYgASB2Joc2hfcmEANQZjY3BfcmQANgdibGRkX3JjABoHYmxkZF9yYgASB2JsZGRfcmEANQdic2l6X3JiABIHYnNpel9yYQA1B2J1cm5fcmIAEgdidXJuX3JhADUHY2FsbF9yZAA2B2NhbGxfcmMAGgdjYWxsX3JiABIHY2FsbF9yYQA1B2Nyb29fcmIAEgdjcm9vX3JhADUHY3Npel9yYgASB2NzaXpfcmEANQpkaXZpX2ltbTEyAAkHZGl2aV9yYgASB2RpdmlfcmEANQdlY2FsX3JkADYHZWNhbF9yYwAaB2VjYWxfcmIAEgdlY2FsX3JhADUHZWNrMV9yYwAaB2VjazFfcmIAEgdlY2sxX3JhADUHZWNyMV9yYwAaB2VjcjFfcmIAEgdlY3IxX3JhADUHZWQxOV9yZAA2B2VkMTlfcmMAGgdlZDE5X3JiABIHZWQxOV9yYQA1CmV4cGlfaW1tMTIACQdleHBpX3JiABIHZXhwaV9yYQA1CmptcGJfaW1tMTgADQdqbXBiX3JhADUKam1wZl9pbW0xOAANB2ptcGZfcmEANQdqbmViX3JjABoHam5lYl9yYgASB2puZWJfcmEANQdqbmVmX3JjABoHam5lZl9yYgASB2puZWZfcmEANQpqbmVpX2ltbTEyAAkHam5laV9yYgASB2puZWlfcmEANQpqbnpiX2ltbTEyAAkHam56Yl9yYgASB2puemJfcmEANQpqbnpmX2ltbTEyAAkHam56Zl9yYgASB2puemZfcmEANQpqbnppX2ltbTE4AA0Ham56aV9yYQA1B2syNTZfcmMAGgdrMjU2X3JiABIHazI1Nl9yYQA1B2xvZ2RfcmQANgdsb2dkX3JjABoHbG9nZF9yYgASB2xvZ2RfcmEANQptY2xpX2ltbTE4AA0HbWNsaV9yYQA1Cm1jcGlfaW1tMTIACQdtY3BpX3JiABIHbWNwaV9yYQA1B21pbnRfcmIAEgdtaW50X3JhADUHbWxkdl9yZAA2B21sZHZfcmMAGgdtbGR2X3JiABIHbWxkdl9yYQA1B21sb2dfcmMAGgdtbG9nX3JiABIHbWxvZ19yYQA1Cm1vZGlfaW1tMTIACQdtb2RpX3JiABIHbW9kaV9yYQA1B21vdmVfcmIAEgdtb3ZlX3JhADUKbW92aV9pbW0xOAANB21vdmlfcmEANQdtcm9vX3JjABoHbXJvb19yYgASB21yb29fcmEANQptdWxpX2ltbTEyAAkHbXVsaV9yYgASB211bGlfcmEANQdyZXRkX3JiABIHcmV0ZF9yYQA1B3MyNTZfcmMAGgdzMjU2X3JiABIHczI1Nl9yYQA1B3Njd3FfcmMAGgdzY3dxX3JiABIHc2N3cV9yYQA1CnNsbGlfaW1tMTIACQdzbGxpX3JiABIHc2xsaV9yYQA1CnNybGlfaW1tMTIACQdzcmxpX3JiABIHc3JsaV9yYQA1B3Nyd3FfcmQANgdzcndxX3JjABoHc3J3cV9yYgASB3Nyd3FfcmEANQpzdWJpX2ltbTEyAAkHc3ViaV9yYgASB3N1YmlfcmEANQdzd3dxX3JkADYHc3d3cV9yYwAaB3N3d3FfcmIAEgdzd3dxX3JhADUHdGltZV9yYgASB3RpbWVfcmEANQd3ZGFtX3JkADYHd2RhbV9yYwAaB3dkYW1fcmIAEgd3ZGFtX3JhADUHd2RjbV9yYwAaB3dkY21fcmIAEgd3ZGNtX3JhADUHd2Rkdl9yYwAaB3dkZHZfcmIAEgd3ZGR2X3JhADUHd2RtZF9yZAA2B3dkbWRfcmMAGgd3ZG1kX3JiABIHd2RtZF9yYQA1B3dkbWxfcmMAGgd3ZG1sX3JiABIHd2RtbF9yYQA1B3dkbW1fcmQANgd3ZG1tX3JjABoHd2RtbV9yYgASB3dkbW1fcmEANQd3ZG9wX3JjABoHd2RvcF9yYgASB3dkb3BfcmEANQd3cWFtX3JkADYHd3FhbV9yYwAaB3dxYW1fcmIAEgd3cWFtX3JhADUHd3FjbV9yYwAaB3dxY21fcmIAEgd3cWNtX3JhADUHd3Fkdl9yYwAaB3dxZHZfcmIAEgd3cWR2X3JhADUHd3FtZF9yZAA2B3dxbWRfcmMAGgd3cW1kX3JiABIHd3FtZF9yYQA1B3dxbWxfcmMAGgd3cW1sX3JiABIHd3FtbF9yYQA1B3dxbW1fcmQANgd3cW1tX3JjABoHd3FtbV9y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C0HggsAAQRkQ2AEACykBAX9BEEEEEMYBIgEgADoADCABQQA2AgggAUKBgICAEDcCACABQQhqCykBAX9BEEEEEMYBIgEgADYCDCABQQA2AgggAUKBgICAEDcCACABQQhqCyIAIAIQAiECIAAQxwEgARDHASACEEdBCHRBygByENEBEGgLDwAgACABIAIgA0ESEPEBCw8AIAAgASACIANBGBDxAQsPACAAIAEgAiADQRwQ8QELDwAgACABIAIgA0EdEPEBCw8AIAAgASACIANBIRDyAQsPACAAIAEgAiADQSIQ8QELDwAgACABIAIgA0EjEPEBCw8AIAAgASACIANBKBDxAQsPACAAIAEgAiADQSoQ8QELDwAgACABIAIgA0EsEPEBCw8AIAAgASACIANBLxDxAQsPACAAIAEgAiADQTgQ8QELEAAgACABIAIgA0HTABDyAQsQACAAIAEgAiADQdQAEPIBCxAAIAAgASACIANB3gAQ8gELEAAgACABIAIgA0HfABDyAQsQACAAIAEgAiADQeAAEPIBCxAAIAAgASACIANB4QAQ8gELEAAgACABIAIgA0HiABDyAQsQACAAIAEgAiADQeMAEPIBCxAAIAAgASACIANB5AAQ8gELEAAgACABIAIgA0HlABDyAQsQACAAIAEgAiADQeYAEPEBCxAAIAAgASACIANB5wAQ8QELEAAgACABIAIgA0HoABDxAQsQACAAIAEgAiADQekAEPEBCxAAIAAgASACIANB6gAQ8QELEAAgACABIAIgA0HrABDxAQsQACAAIAEgAiADQewAEPEBCxAAIAAgASACIANB7gAQ8QELHgAgARBmIQEgABDHASABEMQBQQh0QcwAchDRARBoCxkAIAAgASACQSBBACAEG0EQQQAgAxtyECELDQAgACABIAJBARDzAQsNACAAIAEgAkECEPMBCw0AIAAgASACQQMQ8wELDQAgACABIAJBBBDzAQsNACAAIAEgAkEFEPMBCw0AIAAgASACQQYQ8wELDQAgACABIAJBBxDzAQsNACAAIAEgAkEIEPMBCw0AIAAgASACQQkQ8wELDQAgACABIAJBCxDzAQsNACAAIAEgAkENEPMBCw0AIAAgASACQQ4Q8wELDQAgACABIAJBDxDzAQsNACAAIAEgAkEQEPMBCw0AIAAgASACQREQ8wELDQAg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bmdlIGZvciAxOC1iaXQgaW1tZWRpYXRlAEgAEAAHAAAA2AAQACMAAAAiABAAEwAAALoDAAAcAAAAYCBvdXQgb2YgcmFuZ2UgZm9yIDI0LWJpdCBpbW1lZGlhdGUASAAQAAcAAAAcARAAIwAAACIAEAATAAAAvwMAABwAAABpbnZhbGlkIGVudW0gdmFsdWUgcGFzc2VkYXR0ZW1wdGVkIHRvIHRha2Ugb3duZXJzaGlwIG9mIFJ1c3QgdmFsdWUgd2hpbGUgaXQgd2FzIGJvcnJvd2VkEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAAsAAAALoAAAC7AAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAUAAAAAAAAAAQAAAAYAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OS9ydXN0L2RlcHMvZGxtYWxsb2MtMC4yLjYvc3JjL2RsbWFsbG9jLnJzYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPj0gc2l6ZSArIG1pbl9vdmVyaGVhZACABBAAKQAAAKgEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAgAQQACkAAACuBAAADQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMoBRAAHAAAAIsCAAAeAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAA7CXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yMS4zDHdhc20tYmluZGdlbgYwLjIuOTM=", imports);
|
28662
28662
|
}
|
28663
28663
|
async function initWasm2() {
|
28664
28664
|
return await __wbg_init(wasm());
|
@@ -28792,7 +28792,7 @@ spurious results.`);
|
|
28792
28792
|
exports.XOR = XOR;
|
28793
28793
|
exports.XORI = XORI;
|
28794
28794
|
exports.add = add;
|
28795
|
-
exports.addi =
|
28795
|
+
exports.addi = addi3;
|
28796
28796
|
exports.aloc = aloc;
|
28797
28797
|
exports.and = and;
|
28798
28798
|
exports.andi = andi;
|
@@ -28800,7 +28800,7 @@ spurious results.`);
|
|
28800
28800
|
exports.bhei = bhei;
|
28801
28801
|
exports.bhsh = bhsh;
|
28802
28802
|
exports.bldd = bldd;
|
28803
|
-
exports.bsiz =
|
28803
|
+
exports.bsiz = bsiz2;
|
28804
28804
|
exports.burn = burn;
|
28805
28805
|
exports.call = call;
|
28806
28806
|
exports.cb = cb;
|
@@ -28812,7 +28812,7 @@ spurious results.`);
|
|
28812
28812
|
exports.croo = croo;
|
28813
28813
|
exports.csiz = csiz;
|
28814
28814
|
exports.div = div;
|
28815
|
-
exports.divi =
|
28815
|
+
exports.divi = divi2;
|
28816
28816
|
exports.ecal = ecal;
|
28817
28817
|
exports.eck1 = eck1;
|
28818
28818
|
exports.ecr1 = ecr1;
|
@@ -28829,7 +28829,7 @@ spurious results.`);
|
|
28829
28829
|
exports.initSync = initSync;
|
28830
28830
|
exports.initWasm = initWasm2;
|
28831
28831
|
exports.ji = ji;
|
28832
|
-
exports.jmp =
|
28832
|
+
exports.jmp = jmp2;
|
28833
28833
|
exports.jmpb = jmpb;
|
28834
28834
|
exports.jmpf = jmpf;
|
28835
28835
|
exports.jne = jne;
|
@@ -28841,11 +28841,11 @@ spurious results.`);
|
|
28841
28841
|
exports.jnzi = jnzi;
|
28842
28842
|
exports.k256 = k256;
|
28843
28843
|
exports.lb = lb;
|
28844
|
-
exports.ldc =
|
28844
|
+
exports.ldc = ldc2;
|
28845
28845
|
exports.log = log;
|
28846
28846
|
exports.logd = logd;
|
28847
28847
|
exports.lt = lt;
|
28848
|
-
exports.lw =
|
28848
|
+
exports.lw = lw3;
|
28849
28849
|
exports.mcl = mcl;
|
28850
28850
|
exports.mcli = mcli;
|
28851
28851
|
exports.mcp = mcp;
|
@@ -28856,7 +28856,7 @@ spurious results.`);
|
|
28856
28856
|
exports.mlog = mlog;
|
28857
28857
|
exports.mod_ = mod_;
|
28858
28858
|
exports.modi = modi;
|
28859
|
-
exports.move_ =
|
28859
|
+
exports.move_ = move_2;
|
28860
28860
|
exports.movi = movi;
|
28861
28861
|
exports.mroo = mroo;
|
28862
28862
|
exports.mul = mul;
|
@@ -28882,7 +28882,7 @@ spurious results.`);
|
|
28882
28882
|
exports.srli = srli;
|
28883
28883
|
exports.srw = srw;
|
28884
28884
|
exports.srwq = srwq;
|
28885
|
-
exports.sub =
|
28885
|
+
exports.sub = sub2;
|
28886
28886
|
exports.subi = subi;
|
28887
28887
|
exports.sw = sw;
|
28888
28888
|
exports.sww = sww;
|
@@ -28920,9 +28920,9 @@ spurious results.`);
|
|
28920
28920
|
// ../versions/dist/index.mjs
|
28921
28921
|
function getBuiltinVersions() {
|
28922
28922
|
return {
|
28923
|
-
FORC: "0.
|
28924
|
-
FUEL_CORE: "0.
|
28925
|
-
FUELS: "0.
|
28923
|
+
FORC: "0.66.4",
|
28924
|
+
FUEL_CORE: "0.40.0",
|
28925
|
+
FUELS: "0.97.0"
|
28926
28926
|
};
|
28927
28927
|
}
|
28928
28928
|
function parseVersion(version) {
|
@@ -29045,6 +29045,7 @@ This unreleased fuel-core build may include features and updates not yet support
|
|
29045
29045
|
ErrorCode2["MAX_INPUTS_EXCEEDED"] = "max-inputs-exceeded";
|
29046
29046
|
ErrorCode2["FUNDS_TOO_LOW"] = "funds-too-low";
|
29047
29047
|
ErrorCode2["MAX_OUTPUTS_EXCEEDED"] = "max-outputs-exceeded";
|
29048
|
+
ErrorCode2["MAX_COINS_REACHED"] = "max-coins-reached";
|
29048
29049
|
ErrorCode2["INVALID_RECEIPT_TYPE"] = "invalid-receipt-type";
|
29049
29050
|
ErrorCode2["INVALID_WORD_LIST"] = "invalid-word-list";
|
29050
29051
|
ErrorCode2["INVALID_MNEMONIC"] = "invalid-mnemonic";
|
@@ -29300,6 +29301,9 @@ This unreleased fuel-core build may include features and updates not yet support
|
|
29300
29301
|
maxU64() {
|
29301
29302
|
return this.gte(this.MAX_U64) ? new BN(this.MAX_U64) : this;
|
29302
29303
|
}
|
29304
|
+
max(num) {
|
29305
|
+
return this.gte(num) ? new BN(num) : this;
|
29306
|
+
}
|
29303
29307
|
normalizeZeroToOne() {
|
29304
29308
|
return this.isZero() ? new BN(1) : this;
|
29305
29309
|
}
|
@@ -29310,6 +29314,10 @@ This unreleased fuel-core build may include features and updates not yet support
|
|
29310
29314
|
const valueToParse = value === "." ? "0." : value;
|
29311
29315
|
const [valueUnits = "0", valueDecimals = "0"] = valueToParse.split(".");
|
29312
29316
|
const length = valueDecimals.length;
|
29317
|
+
if (units === 0) {
|
29318
|
+
const valueWithoutDecimals = valueToParse.replace(",", "").split(".")[0];
|
29319
|
+
return bn(valueWithoutDecimals);
|
29320
|
+
}
|
29313
29321
|
if (length > units) {
|
29314
29322
|
throw new FuelError(
|
29315
29323
|
ErrorCode.CONVERTING_FAILED,
|
@@ -30755,6 +30763,7 @@ If you are attempting to transform a hex value, please make sure it is being pas
|
|
30755
30763
|
var BYTES_32 = 32;
|
30756
30764
|
var UTXO_ID_LEN = BYTES_32 + 2;
|
30757
30765
|
var ASSET_ID_LEN = BYTES_32;
|
30766
|
+
var CONTRACT_ID_LEN = BYTES_32;
|
30758
30767
|
var ADDRESS_LEN = BYTES_32;
|
30759
30768
|
var NONCE_LEN = BYTES_32;
|
30760
30769
|
var TX_LEN = WORD_SIZE * 4;
|
@@ -32257,7 +32266,10 @@ If you are attempting to transform a hex value, please make sure it is being pas
|
|
32257
32266
|
/** @hidden */
|
32258
32267
|
static toChecksum(address) {
|
32259
32268
|
if (!isB256(address)) {
|
32260
|
-
throw new
|
32269
|
+
throw new FuelError(
|
32270
|
+
FuelError.CODES.INVALID_B256_ADDRESS,
|
32271
|
+
`Invalid B256 Address: ${address}.`
|
32272
|
+
);
|
32261
32273
|
}
|
32262
32274
|
const addressHex = hexlify(address).toLowerCase().slice(2);
|
32263
32275
|
const checksum = sha256(addressHex);
|
@@ -37146,9 +37158,6 @@ spurious results.`);
|
|
37146
37158
|
var SuccessStatusFragmentDoc = lib_default2`
|
37147
37159
|
fragment SuccessStatusFragment on SuccessStatus {
|
37148
37160
|
type: __typename
|
37149
|
-
block {
|
37150
|
-
id
|
37151
|
-
}
|
37152
37161
|
time
|
37153
37162
|
programState {
|
37154
37163
|
returnType
|
@@ -37161,6 +37170,14 @@ spurious results.`);
|
|
37161
37170
|
totalFee
|
37162
37171
|
}
|
37163
37172
|
${ReceiptFragmentDoc}`;
|
37173
|
+
var SuccessStatusWithBlockIdFragmentDoc = lib_default2`
|
37174
|
+
fragment SuccessStatusWithBlockIdFragment on SuccessStatus {
|
37175
|
+
...SuccessStatusFragment
|
37176
|
+
block {
|
37177
|
+
id
|
37178
|
+
}
|
37179
|
+
}
|
37180
|
+
${SuccessStatusFragmentDoc}`;
|
37164
37181
|
var MalleableTransactionFieldsFragmentDoc = lib_default2`
|
37165
37182
|
fragment malleableTransactionFieldsFragment on Transaction {
|
37166
37183
|
receiptsRoot
|
@@ -37205,9 +37222,6 @@ spurious results.`);
|
|
37205
37222
|
var FailureStatusFragmentDoc = lib_default2`
|
37206
37223
|
fragment FailureStatusFragment on FailureStatus {
|
37207
37224
|
type: __typename
|
37208
|
-
block {
|
37209
|
-
id
|
37210
|
-
}
|
37211
37225
|
totalGas
|
37212
37226
|
totalFee
|
37213
37227
|
time
|
@@ -37217,6 +37231,14 @@ spurious results.`);
|
|
37217
37231
|
}
|
37218
37232
|
}
|
37219
37233
|
${ReceiptFragmentDoc}`;
|
37234
|
+
var FailureStatusWithBlockIdFragmentDoc = lib_default2`
|
37235
|
+
fragment FailureStatusWithBlockIdFragment on FailureStatus {
|
37236
|
+
...FailureStatusFragment
|
37237
|
+
block {
|
37238
|
+
id
|
37239
|
+
}
|
37240
|
+
}
|
37241
|
+
${FailureStatusFragmentDoc}`;
|
37220
37242
|
var SqueezedOutStatusFragmentDoc = lib_default2`
|
37221
37243
|
fragment SqueezedOutStatusFragment on SqueezedOutStatus {
|
37222
37244
|
type: __typename
|
@@ -37229,13 +37251,13 @@ spurious results.`);
|
|
37229
37251
|
...SubmittedStatusFragment
|
37230
37252
|
}
|
37231
37253
|
... on SuccessStatus {
|
37232
|
-
...
|
37254
|
+
...SuccessStatusWithBlockIdFragment
|
37233
37255
|
transaction {
|
37234
37256
|
...malleableTransactionFieldsFragment
|
37235
37257
|
}
|
37236
37258
|
}
|
37237
37259
|
... on FailureStatus {
|
37238
|
-
...
|
37260
|
+
...FailureStatusWithBlockIdFragment
|
37239
37261
|
transaction {
|
37240
37262
|
...malleableTransactionFieldsFragment
|
37241
37263
|
}
|
@@ -37245,9 +37267,9 @@ spurious results.`);
|
|
37245
37267
|
}
|
37246
37268
|
}
|
37247
37269
|
${SubmittedStatusFragmentDoc}
|
37248
|
-
${
|
37270
|
+
${SuccessStatusWithBlockIdFragmentDoc}
|
37249
37271
|
${MalleableTransactionFieldsFragmentDoc}
|
37250
|
-
${
|
37272
|
+
${FailureStatusWithBlockIdFragmentDoc}
|
37251
37273
|
${SqueezedOutStatusFragmentDoc}`;
|
37252
37274
|
var TransactionStatusFragmentDoc = lib_default2`
|
37253
37275
|
fragment transactionStatusFragment on TransactionStatus {
|
@@ -37277,6 +37299,12 @@ ${SqueezedOutStatusFragmentDoc}`;
|
|
37277
37299
|
}
|
37278
37300
|
}
|
37279
37301
|
${TransactionStatusFragmentDoc}`;
|
37302
|
+
var TransactionRawPayloadFragmentDoc = lib_default2`
|
37303
|
+
fragment transactionRawPayloadFragment on Transaction {
|
37304
|
+
id
|
37305
|
+
rawPayload
|
37306
|
+
}
|
37307
|
+
`;
|
37280
37308
|
var InputEstimatePredicatesFragmentDoc = lib_default2`
|
37281
37309
|
fragment inputEstimatePredicatesFragment on Input {
|
37282
37310
|
... on InputCoin {
|
@@ -37364,7 +37392,6 @@ ${ReceiptFragmentDoc}`;
|
|
37364
37392
|
fragment coinFragment on Coin {
|
37365
37393
|
type: __typename
|
37366
37394
|
utxoId
|
37367
|
-
owner
|
37368
37395
|
amount
|
37369
37396
|
assetId
|
37370
37397
|
blockCreated
|
@@ -37388,10 +37415,15 @@ ${ReceiptFragmentDoc}`;
|
|
37388
37415
|
sender
|
37389
37416
|
recipient
|
37390
37417
|
data
|
37391
|
-
nonce
|
37392
37418
|
daHeight
|
37393
37419
|
}
|
37394
37420
|
`;
|
37421
|
+
var GetMessageFragmentDoc = lib_default2`
|
37422
|
+
fragment getMessageFragment on Message {
|
37423
|
+
...messageFragment
|
37424
|
+
nonce
|
37425
|
+
}
|
37426
|
+
${MessageFragmentDoc}`;
|
37395
37427
|
var MessageProofFragmentDoc = lib_default2`
|
37396
37428
|
fragment messageProofFragment on MessageProof {
|
37397
37429
|
messageProof {
|
@@ -37436,7 +37468,6 @@ ${ReceiptFragmentDoc}`;
|
|
37436
37468
|
}
|
37437
37469
|
sender
|
37438
37470
|
recipient
|
37439
|
-
nonce
|
37440
37471
|
amount
|
37441
37472
|
data
|
37442
37473
|
}
|
@@ -37583,12 +37614,6 @@ ${GasCostsFragmentDoc}`;
|
|
37583
37614
|
blockHeight
|
37584
37615
|
failure
|
37585
37616
|
}
|
37586
|
-
}
|
37587
|
-
`;
|
37588
|
-
var TransactionRawPayloadFragmentDoc = lib_default2`
|
37589
|
-
fragment transactionRawPayload on Transaction {
|
37590
|
-
id
|
37591
|
-
rawPayload
|
37592
37617
|
}
|
37593
37618
|
`;
|
37594
37619
|
var GetVersionDocument = lib_default2`
|
@@ -37633,16 +37658,34 @@ ${NodeInfoFragmentDoc}`;
|
|
37633
37658
|
var GetTransactionWithReceiptsDocument = lib_default2`
|
37634
37659
|
query getTransactionWithReceipts($transactionId: TransactionId!) {
|
37635
37660
|
transaction(id: $transactionId) {
|
37636
|
-
|
37661
|
+
id
|
37662
|
+
rawPayload
|
37663
|
+
status {
|
37664
|
+
... on SubmittedStatus {
|
37665
|
+
...SubmittedStatusFragment
|
37666
|
+
}
|
37667
|
+
... on SuccessStatus {
|
37668
|
+
...SuccessStatusWithBlockIdFragment
|
37669
|
+
}
|
37670
|
+
... on FailureStatus {
|
37671
|
+
...FailureStatusWithBlockIdFragment
|
37672
|
+
}
|
37673
|
+
... on SqueezedOutStatus {
|
37674
|
+
...SqueezedOutStatusFragment
|
37675
|
+
}
|
37676
|
+
}
|
37637
37677
|
}
|
37638
37678
|
}
|
37639
|
-
${
|
37679
|
+
${SubmittedStatusFragmentDoc}
|
37680
|
+
${SuccessStatusWithBlockIdFragmentDoc}
|
37681
|
+
${FailureStatusWithBlockIdFragmentDoc}
|
37682
|
+
${SqueezedOutStatusFragmentDoc}`;
|
37640
37683
|
var GetTransactionsDocument = lib_default2`
|
37641
37684
|
query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
|
37642
37685
|
transactions(after: $after, before: $before, first: $first, last: $last) {
|
37643
37686
|
edges {
|
37644
37687
|
node {
|
37645
|
-
|
37688
|
+
rawPayload
|
37646
37689
|
}
|
37647
37690
|
}
|
37648
37691
|
pageInfo {
|
@@ -37650,8 +37693,7 @@ ${NodeInfoFragmentDoc}`;
|
|
37650
37693
|
}
|
37651
37694
|
}
|
37652
37695
|
}
|
37653
|
-
${
|
37654
|
-
${PageInfoFragmentDoc}`;
|
37696
|
+
${PageInfoFragmentDoc}`;
|
37655
37697
|
var GetTransactionsByOwnerDocument = lib_default2`
|
37656
37698
|
query getTransactionsByOwner($owner: Address!, $after: String, $before: String, $first: Int, $last: Int) {
|
37657
37699
|
transactionsByOwner(
|
@@ -37710,7 +37752,7 @@ ${TransactionFragmentDoc}`;
|
|
37710
37752
|
block(id: $blockId, height: $blockHeight) {
|
37711
37753
|
...blockFragment
|
37712
37754
|
transactions {
|
37713
|
-
...
|
37755
|
+
...transactionRawPayloadFragment
|
37714
37756
|
}
|
37715
37757
|
}
|
37716
37758
|
}
|
@@ -37735,6 +37777,7 @@ ${BlockFragmentDoc}`;
|
|
37735
37777
|
query getCoin($coinId: UtxoId!) {
|
37736
37778
|
coin(utxoId: $coinId) {
|
37737
37779
|
...coinFragment
|
37780
|
+
owner
|
37738
37781
|
}
|
37739
37782
|
}
|
37740
37783
|
${CoinFragmentDoc}`;
|
@@ -37843,13 +37886,13 @@ ${MessageCoinFragmentDoc}`;
|
|
37843
37886
|
}
|
37844
37887
|
edges {
|
37845
37888
|
node {
|
37846
|
-
...
|
37889
|
+
...getMessageFragment
|
37847
37890
|
}
|
37848
37891
|
}
|
37849
37892
|
}
|
37850
37893
|
}
|
37851
37894
|
${PageInfoFragmentDoc}
|
37852
|
-
${
|
37895
|
+
${GetMessageFragmentDoc}`;
|
37853
37896
|
var GetMessageProofDocument = lib_default2`
|
37854
37897
|
query getMessageProof($transactionId: TransactionId!, $nonce: Nonce!, $commitBlockId: BlockId, $commitBlockHeight: U32) {
|
37855
37898
|
messageProof(
|
@@ -37920,6 +37963,17 @@ ${MessageFragmentDoc}`;
|
|
37920
37963
|
transaction(id: $transactionId) {
|
37921
37964
|
id
|
37922
37965
|
}
|
37966
|
+
}
|
37967
|
+
`;
|
37968
|
+
var GetConsensusParametersVersionDocument = lib_default2`
|
37969
|
+
query getConsensusParametersVersion {
|
37970
|
+
chain {
|
37971
|
+
latestBlock {
|
37972
|
+
header {
|
37973
|
+
consensusParametersVersion
|
37974
|
+
}
|
37975
|
+
}
|
37976
|
+
}
|
37923
37977
|
}
|
37924
37978
|
`;
|
37925
37979
|
var SubmitAndAwaitDocument = lib_default2`
|
@@ -38041,6 +38095,9 @@ ${MessageFragmentDoc}`;
|
|
38041
38095
|
isUserAccount(variables, options) {
|
38042
38096
|
return requester(IsUserAccountDocument, variables, options);
|
38043
38097
|
},
|
38098
|
+
getConsensusParametersVersion(variables, options) {
|
38099
|
+
return requester(GetConsensusParametersVersionDocument, variables, options);
|
38100
|
+
},
|
38044
38101
|
submitAndAwait(variables, options) {
|
38045
38102
|
return requester(SubmitAndAwaitDocument, variables, options);
|
38046
38103
|
},
|
@@ -38414,9 +38471,11 @@ ${MessageFragmentDoc}`;
|
|
38414
38471
|
const { receiptType } = receipt;
|
38415
38472
|
switch (receiptType) {
|
38416
38473
|
case "CALL" /* Call */: {
|
38474
|
+
const id = hexOrZero(receipt.id || receipt.contractId);
|
38417
38475
|
const callReceipt = {
|
38418
38476
|
type: ReceiptType.Call,
|
38419
|
-
|
38477
|
+
id,
|
38478
|
+
from: id,
|
38420
38479
|
to: hexOrZero(receipt?.to),
|
38421
38480
|
amount: bn(receipt.amount),
|
38422
38481
|
assetId: hexOrZero(receipt.assetId),
|
@@ -38473,24 +38532,36 @@ ${MessageFragmentDoc}`;
|
|
38473
38532
|
return revertReceipt;
|
38474
38533
|
}
|
38475
38534
|
case "LOG" /* Log */: {
|
38535
|
+
const ra = bn(receipt.ra);
|
38536
|
+
const rb = bn(receipt.rb);
|
38537
|
+
const rc = bn(receipt.rc);
|
38538
|
+
const rd = bn(receipt.rd);
|
38476
38539
|
const logReceipt = {
|
38477
38540
|
type: ReceiptType.Log,
|
38478
38541
|
id: hexOrZero(receipt.id || receipt.contractId),
|
38479
|
-
|
38480
|
-
|
38481
|
-
|
38482
|
-
|
38542
|
+
ra,
|
38543
|
+
rb,
|
38544
|
+
rc,
|
38545
|
+
rd,
|
38546
|
+
val0: ra,
|
38547
|
+
val1: rb,
|
38548
|
+
val2: rc,
|
38549
|
+
val3: rd,
|
38483
38550
|
pc: bn(receipt.pc),
|
38484
38551
|
is: bn(receipt.is)
|
38485
38552
|
};
|
38486
38553
|
return logReceipt;
|
38487
38554
|
}
|
38488
38555
|
case "LOG_DATA" /* LogData */: {
|
38556
|
+
const ra = bn(receipt.ra);
|
38557
|
+
const rb = bn(receipt.rb);
|
38489
38558
|
const logDataReceipt = {
|
38490
38559
|
type: ReceiptType.LogData,
|
38491
38560
|
id: hexOrZero(receipt.id || receipt.contractId),
|
38492
|
-
|
38493
|
-
|
38561
|
+
ra,
|
38562
|
+
rb,
|
38563
|
+
val0: ra,
|
38564
|
+
val1: rb,
|
38494
38565
|
ptr: bn(receipt.ptr),
|
38495
38566
|
len: bn(receipt.len),
|
38496
38567
|
digest: hexOrZero(receipt.digest),
|
@@ -38501,9 +38572,11 @@ ${MessageFragmentDoc}`;
|
|
38501
38572
|
return logDataReceipt;
|
38502
38573
|
}
|
38503
38574
|
case "TRANSFER" /* Transfer */: {
|
38575
|
+
const id = hexOrZero(receipt.id || receipt.contractId);
|
38504
38576
|
const transferReceipt = {
|
38505
38577
|
type: ReceiptType.Transfer,
|
38506
|
-
|
38578
|
+
id,
|
38579
|
+
from: id,
|
38507
38580
|
to: hexOrZero(receipt.toAddress || receipt?.to),
|
38508
38581
|
amount: bn(receipt.amount),
|
38509
38582
|
assetId: hexOrZero(receipt.assetId),
|
@@ -38513,9 +38586,11 @@ ${MessageFragmentDoc}`;
|
|
38513
38586
|
return transferReceipt;
|
38514
38587
|
}
|
38515
38588
|
case "TRANSFER_OUT" /* TransferOut */: {
|
38589
|
+
const id = hexOrZero(receipt.id || receipt.contractId);
|
38516
38590
|
const transferOutReceipt = {
|
38517
38591
|
type: ReceiptType.TransferOut,
|
38518
|
-
|
38592
|
+
id,
|
38593
|
+
from: id,
|
38519
38594
|
to: hexOrZero(receipt.toAddress || receipt.to),
|
38520
38595
|
amount: bn(receipt.amount),
|
38521
38596
|
assetId: hexOrZero(receipt.assetId),
|
@@ -39555,7 +39630,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
39555
39630
|
type = TransactionType.Blob;
|
39556
39631
|
/** Blob ID */
|
39557
39632
|
blobId;
|
39558
|
-
/** Witness index of
|
39633
|
+
/** Witness index of the bytecode to create */
|
39559
39634
|
witnessIndex;
|
39560
39635
|
/**
|
39561
39636
|
* Creates an instance `BlobTransactionRequest`.
|
@@ -40882,14 +40957,14 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
40882
40957
|
switch (gqlTransactionStatus.type) {
|
40883
40958
|
case "SuccessStatus":
|
40884
40959
|
time = gqlTransactionStatus.time;
|
40885
|
-
blockId = gqlTransactionStatus.block
|
40960
|
+
blockId = gqlTransactionStatus.block?.id;
|
40886
40961
|
isStatusSuccess = true;
|
40887
40962
|
totalFee = bn(gqlTransactionStatus.totalFee);
|
40888
40963
|
totalGas = bn(gqlTransactionStatus.totalGas);
|
40889
40964
|
break;
|
40890
40965
|
case "FailureStatus":
|
40891
40966
|
time = gqlTransactionStatus.time;
|
40892
|
-
blockId = gqlTransactionStatus.block
|
40967
|
+
blockId = gqlTransactionStatus.block?.id;
|
40893
40968
|
isStatusFailure = true;
|
40894
40969
|
totalFee = bn(gqlTransactionStatus.totalFee);
|
40895
40970
|
totalGas = bn(gqlTransactionStatus.totalGas);
|
@@ -41198,8 +41273,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
41198
41273
|
const subscription = this.submitTxSubscription ?? await this.provider.operations.statusChange({
|
41199
41274
|
transactionId: this.id
|
41200
41275
|
});
|
41201
|
-
for await (const
|
41202
|
-
const statusChange = "statusChange" in
|
41276
|
+
for await (const sub2 of subscription) {
|
41277
|
+
const statusChange = "statusChange" in sub2 ? sub2.statusChange : sub2.submitAndAwaitStatus;
|
41203
41278
|
this.status = statusChange;
|
41204
41279
|
if (statusChange.type === "SqueezedOutStatus") {
|
41205
41280
|
this.unsetResourceCache();
|
@@ -41320,17 +41395,59 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
41320
41395
|
{},
|
41321
41396
|
rawError
|
41322
41397
|
);
|
41398
|
+
case "max number of coins is reached while trying to fit the target" /* MAX_COINS_REACHED */:
|
41399
|
+
throw new FuelError(
|
41400
|
+
ErrorCode.MAX_COINS_REACHED,
|
41401
|
+
"The account retrieving coins has exceeded the maximum number of coins per asset. Please consider combining your coins into a single UTXO.",
|
41402
|
+
{},
|
41403
|
+
rawError
|
41404
|
+
);
|
41323
41405
|
default:
|
41324
41406
|
throw new FuelError(ErrorCode.INVALID_REQUEST, errorMessage);
|
41325
41407
|
}
|
41326
41408
|
};
|
41327
41409
|
|
41410
|
+
// src/providers/utils/validate-pagination-args.ts
|
41411
|
+
var validatePaginationArgs = (params) => {
|
41412
|
+
const { paginationLimit, inputArgs = {} } = params;
|
41413
|
+
const { first, last, after, before } = inputArgs;
|
41414
|
+
if (after && before) {
|
41415
|
+
throw new FuelError(
|
41416
|
+
ErrorCode.INVALID_INPUT_PARAMETERS,
|
41417
|
+
'Pagination arguments "after" and "before" cannot be used together'
|
41418
|
+
);
|
41419
|
+
}
|
41420
|
+
if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
|
41421
|
+
throw new FuelError(
|
41422
|
+
ErrorCode.INVALID_INPUT_PARAMETERS,
|
41423
|
+
`Pagination limit for this query cannot exceed ${paginationLimit} items`
|
41424
|
+
);
|
41425
|
+
}
|
41426
|
+
if (first && before) {
|
41427
|
+
throw new FuelError(
|
41428
|
+
ErrorCode.INVALID_INPUT_PARAMETERS,
|
41429
|
+
'The use of pagination argument "first" with "before" is not supported'
|
41430
|
+
);
|
41431
|
+
}
|
41432
|
+
if (last && after) {
|
41433
|
+
throw new FuelError(
|
41434
|
+
ErrorCode.INVALID_INPUT_PARAMETERS,
|
41435
|
+
'The use of pagination argument "last" with "after" is not supported'
|
41436
|
+
);
|
41437
|
+
}
|
41438
|
+
if (!first && !last) {
|
41439
|
+
inputArgs.first = paginationLimit;
|
41440
|
+
}
|
41441
|
+
return inputArgs;
|
41442
|
+
};
|
41443
|
+
|
41328
41444
|
// src/providers/provider.ts
|
41329
41445
|
var MAX_RETRIES = 10;
|
41330
41446
|
var RESOURCES_PAGE_SIZE_LIMIT = 512;
|
41331
41447
|
var TRANSACTIONS_PAGE_SIZE_LIMIT = 60;
|
41332
41448
|
var BLOCKS_PAGE_SIZE_LIMIT = 5;
|
41333
41449
|
var DEFAULT_RESOURCE_CACHE_TTL = 2e4;
|
41450
|
+
var GAS_USED_MODIFIER = 1.2;
|
41334
41451
|
var processGqlChain = (chain) => {
|
41335
41452
|
const { name, daHeight, consensusParameters } = chain;
|
41336
41453
|
const {
|
@@ -41406,6 +41523,8 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
41406
41523
|
__publicField(this, "url");
|
41407
41524
|
/** @hidden */
|
41408
41525
|
__publicField(this, "urlWithoutAuth");
|
41526
|
+
/** @hidden */
|
41527
|
+
__publicField(this, "consensusParametersTimestamp");
|
41409
41528
|
__publicField(this, "options", {
|
41410
41529
|
timeout: void 0,
|
41411
41530
|
resourceCacheTTL: void 0,
|
@@ -41558,16 +41677,19 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
41558
41677
|
}
|
41559
41678
|
/**
|
41560
41679
|
* Return the chain and node information.
|
41561
|
-
*
|
41680
|
+
* @param ignoreCache - If true, ignores the cache and re-fetch configs.
|
41562
41681
|
* @returns A promise that resolves to the Chain and NodeInfo.
|
41563
41682
|
*/
|
41564
|
-
async fetchChainAndNodeInfo() {
|
41683
|
+
async fetchChainAndNodeInfo(ignoreCache = false) {
|
41565
41684
|
let nodeInfo;
|
41566
41685
|
let chain;
|
41567
41686
|
try {
|
41687
|
+
if (ignoreCache) {
|
41688
|
+
throw new Error(`Jumps to the catch block andre-fetch`);
|
41689
|
+
}
|
41568
41690
|
nodeInfo = this.getNode();
|
41569
41691
|
chain = this.getChain();
|
41570
|
-
} catch (
|
41692
|
+
} catch (_err) {
|
41571
41693
|
const data = await this.operations.getChainAndNodeInfo();
|
41572
41694
|
nodeInfo = {
|
41573
41695
|
maxDepth: bn(data.nodeInfo.maxDepth),
|
@@ -41580,6 +41702,7 @@ ${PANIC_DOC_URL}#variant.${statusReason}`;
|
|
41580
41702
|
chain = processGqlChain(data.chain);
|
41581
41703
|
_Provider.chainInfoCache[this.urlWithoutAuth] = chain;
|
41582
41704
|
_Provider.nodeInfoCache[this.urlWithoutAuth] = nodeInfo;
|
41705
|
+
this.consensusParametersTimestamp = Date.now();
|
41583
41706
|
}
|
41584
41707
|
return {
|
41585
41708
|
chain,
|
@@ -41729,18 +41852,25 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
41729
41852
|
} = this.getChain();
|
41730
41853
|
return baseAssetId;
|
41731
41854
|
}
|
41732
|
-
|
41733
|
-
|
41855
|
+
/**
|
41856
|
+
* @hidden
|
41857
|
+
*/
|
41858
|
+
validateTransaction(tx) {
|
41859
|
+
const {
|
41860
|
+
consensusParameters: {
|
41861
|
+
txParameters: { maxInputs, maxOutputs }
|
41862
|
+
}
|
41863
|
+
} = this.getChain();
|
41734
41864
|
if (bn(tx.inputs.length).gt(maxInputs)) {
|
41735
41865
|
throw new FuelError(
|
41736
41866
|
ErrorCode.MAX_INPUTS_EXCEEDED,
|
41737
|
-
|
41867
|
+
`The transaction exceeds the maximum allowed number of inputs. Tx inputs: ${tx.inputs.length}, max inputs: ${maxInputs}`
|
41738
41868
|
);
|
41739
41869
|
}
|
41740
41870
|
if (bn(tx.outputs.length).gt(maxOutputs)) {
|
41741
41871
|
throw new FuelError(
|
41742
41872
|
ErrorCode.MAX_OUTPUTS_EXCEEDED,
|
41743
|
-
|
41873
|
+
`The transaction exceeds the maximum allowed number of outputs. Tx outputs: ${tx.outputs.length}, max outputs: ${maxOutputs}`
|
41744
41874
|
);
|
41745
41875
|
}
|
41746
41876
|
}
|
@@ -41759,8 +41889,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
41759
41889
|
if (estimateTxDependencies) {
|
41760
41890
|
await this.estimateTxDependencies(transactionRequest);
|
41761
41891
|
}
|
41762
|
-
|
41763
|
-
this.validateTransaction(transactionRequest, consensusParameters);
|
41892
|
+
this.validateTransaction(transactionRequest);
|
41764
41893
|
const encodedTransaction = hexlify(transactionRequest.toTransactionBytes());
|
41765
41894
|
let abis;
|
41766
41895
|
if (isTransactionTypeScript(transactionRequest)) {
|
@@ -41848,6 +41977,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
41848
41977
|
const missingContractIds = [];
|
41849
41978
|
let outputVariables = 0;
|
41850
41979
|
let dryRunStatus;
|
41980
|
+
this.validateTransaction(transactionRequest);
|
41851
41981
|
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
41852
41982
|
const {
|
41853
41983
|
dryRun: [{ receipts: rawReceipts, status }]
|
@@ -41970,6 +42100,27 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
41970
42100
|
});
|
41971
42101
|
return results;
|
41972
42102
|
}
|
42103
|
+
async autoRefetchConfigs() {
|
42104
|
+
const now = Date.now();
|
42105
|
+
const diff = now - (this.consensusParametersTimestamp ?? 0);
|
42106
|
+
if (diff < 6e4) {
|
42107
|
+
return;
|
42108
|
+
}
|
42109
|
+
const chainInfo = this.getChain();
|
42110
|
+
const {
|
42111
|
+
consensusParameters: { version: previous }
|
42112
|
+
} = chainInfo;
|
42113
|
+
const {
|
42114
|
+
chain: {
|
42115
|
+
latestBlock: {
|
42116
|
+
header: { consensusParametersVersion: current }
|
42117
|
+
}
|
42118
|
+
}
|
42119
|
+
} = await this.operations.getConsensusParametersVersion();
|
42120
|
+
if (previous !== current) {
|
42121
|
+
await this.fetchChainAndNodeInfo(true);
|
42122
|
+
}
|
42123
|
+
}
|
41973
42124
|
/**
|
41974
42125
|
* Estimates the transaction gas and fee based on the provided transaction request.
|
41975
42126
|
* @param transactionRequest - The transaction request object.
|
@@ -41978,6 +42129,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
41978
42129
|
async estimateTxGasAndFee(params) {
|
41979
42130
|
const { transactionRequest } = params;
|
41980
42131
|
let { gasPrice } = params;
|
42132
|
+
await this.autoRefetchConfigs();
|
41981
42133
|
const chainInfo = this.getChain();
|
41982
42134
|
const { gasPriceFactor, maxGasPerTx } = this.getGasConfig();
|
41983
42135
|
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
@@ -42091,7 +42243,9 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42091
42243
|
if (dryRunStatus && "reason" in dryRunStatus) {
|
42092
42244
|
throw this.extractDryRunError(txRequestClone, receipts, dryRunStatus);
|
42093
42245
|
}
|
42094
|
-
|
42246
|
+
const { maxGasPerTx } = this.getGasConfig();
|
42247
|
+
const pristineGasUsed = getGasUsedFromReceipts(receipts);
|
42248
|
+
gasUsed = bn(pristineGasUsed.muln(GAS_USED_MODIFIER)).max(maxGasPerTx.sub(minGas));
|
42095
42249
|
txRequestClone.gasLimit = gasUsed;
|
42096
42250
|
({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
|
42097
42251
|
transactionRequest: txRequestClone,
|
@@ -42128,7 +42282,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42128
42282
|
const {
|
42129
42283
|
coins: { edges, pageInfo }
|
42130
42284
|
} = await this.operations.getCoins({
|
42131
|
-
...
|
42285
|
+
...validatePaginationArgs({
|
42132
42286
|
paginationLimit: RESOURCES_PAGE_SIZE_LIMIT,
|
42133
42287
|
inputArgs: paginationArgs
|
42134
42288
|
}),
|
@@ -42138,7 +42292,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42138
42292
|
id: node.utxoId,
|
42139
42293
|
assetId: node.assetId,
|
42140
42294
|
amount: bn(node.amount),
|
42141
|
-
owner:
|
42295
|
+
owner: ownerAddress,
|
42142
42296
|
blockCreated: bn(node.blockCreated),
|
42143
42297
|
txCreatedIdx: bn(node.txCreatedIdx)
|
42144
42298
|
}));
|
@@ -42192,7 +42346,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42192
42346
|
id: coin.utxoId,
|
42193
42347
|
amount: bn(coin.amount),
|
42194
42348
|
assetId: coin.assetId,
|
42195
|
-
owner:
|
42349
|
+
owner: ownerAddress,
|
42196
42350
|
blockCreated: bn(coin.blockCreated),
|
42197
42351
|
txCreatedIdx: bn(coin.txCreatedIdx)
|
42198
42352
|
};
|
@@ -42267,7 +42421,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42267
42421
|
const {
|
42268
42422
|
blocks: { edges, pageInfo }
|
42269
42423
|
} = await this.operations.getBlocks({
|
42270
|
-
...
|
42424
|
+
...validatePaginationArgs({
|
42271
42425
|
paginationLimit: BLOCKS_PAGE_SIZE_LIMIT,
|
42272
42426
|
inputArgs: params
|
42273
42427
|
})
|
@@ -42362,7 +42516,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42362
42516
|
const {
|
42363
42517
|
transactions: { edges, pageInfo }
|
42364
42518
|
} = await this.operations.getTransactions({
|
42365
|
-
...
|
42519
|
+
...validatePaginationArgs({
|
42366
42520
|
inputArgs: paginationArgs,
|
42367
42521
|
paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
|
42368
42522
|
})
|
@@ -42457,7 +42611,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42457
42611
|
const {
|
42458
42612
|
messages: { edges, pageInfo }
|
42459
42613
|
} = await this.operations.getMessages({
|
42460
|
-
...
|
42614
|
+
...validatePaginationArgs({
|
42461
42615
|
inputArgs: paginationArgs,
|
42462
42616
|
paginationLimit: RESOURCES_PAGE_SIZE_LIMIT
|
42463
42617
|
}),
|
@@ -42681,13 +42835,13 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42681
42835
|
messageId: InputMessageCoder.getMessageId({
|
42682
42836
|
sender: rawMessage.sender,
|
42683
42837
|
recipient: rawMessage.recipient,
|
42684
|
-
nonce
|
42838
|
+
nonce,
|
42685
42839
|
amount: bn(rawMessage.amount),
|
42686
42840
|
data: rawMessage.data
|
42687
42841
|
}),
|
42688
42842
|
sender: Address.fromAddressOrString(rawMessage.sender),
|
42689
42843
|
recipient: Address.fromAddressOrString(rawMessage.recipient),
|
42690
|
-
nonce
|
42844
|
+
nonce,
|
42691
42845
|
amount: bn(rawMessage.amount),
|
42692
42846
|
data: InputMessageCoder.decodeData(rawMessage.data),
|
42693
42847
|
daHeight: bn(rawMessage.daHeight)
|
@@ -42709,41 +42863,6 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42709
42863
|
}
|
42710
42864
|
return relayedTransactionStatus;
|
42711
42865
|
}
|
42712
|
-
/**
|
42713
|
-
* @hidden
|
42714
|
-
*/
|
42715
|
-
validatePaginationArgs(params) {
|
42716
|
-
const { paginationLimit, inputArgs = {} } = params;
|
42717
|
-
const { first, last, after, before } = inputArgs;
|
42718
|
-
if (after && before) {
|
42719
|
-
throw new FuelError(
|
42720
|
-
ErrorCode.INVALID_INPUT_PARAMETERS,
|
42721
|
-
'Pagination arguments "after" and "before" cannot be used together'
|
42722
|
-
);
|
42723
|
-
}
|
42724
|
-
if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
|
42725
|
-
throw new FuelError(
|
42726
|
-
ErrorCode.INVALID_INPUT_PARAMETERS,
|
42727
|
-
`Pagination limit for this query cannot exceed ${paginationLimit} items`
|
42728
|
-
);
|
42729
|
-
}
|
42730
|
-
if (first && before) {
|
42731
|
-
throw new FuelError(
|
42732
|
-
ErrorCode.INVALID_INPUT_PARAMETERS,
|
42733
|
-
'The use of pagination argument "first" with "before" is not supported'
|
42734
|
-
);
|
42735
|
-
}
|
42736
|
-
if (last && after) {
|
42737
|
-
throw new FuelError(
|
42738
|
-
ErrorCode.INVALID_INPUT_PARAMETERS,
|
42739
|
-
'The use of pagination argument "last" with "after" is not supported'
|
42740
|
-
);
|
42741
|
-
}
|
42742
|
-
if (!first && !last) {
|
42743
|
-
inputArgs.first = paginationLimit;
|
42744
|
-
}
|
42745
|
-
return inputArgs;
|
42746
|
-
}
|
42747
42866
|
/**
|
42748
42867
|
* @hidden
|
42749
42868
|
*/
|
@@ -42864,7 +42983,15 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
42864
42983
|
}
|
42865
42984
|
async function getTransactionsSummaries(params) {
|
42866
42985
|
const { filters, provider, abiMap } = params;
|
42867
|
-
const {
|
42986
|
+
const { owner, ...inputArgs } = filters;
|
42987
|
+
const validPaginationParams = validatePaginationArgs({
|
42988
|
+
inputArgs,
|
42989
|
+
paginationLimit: TRANSACTIONS_PAGE_SIZE_LIMIT
|
42990
|
+
});
|
42991
|
+
const { transactionsByOwner } = await provider.operations.getTransactionsByOwner({
|
42992
|
+
...validPaginationParams,
|
42993
|
+
owner
|
42994
|
+
});
|
42868
42995
|
const { edges, pageInfo } = transactionsByOwner;
|
42869
42996
|
const {
|
42870
42997
|
consensusParameters: {
|
@@ -43584,34 +43711,42 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
43584
43711
|
|
43585
43712
|
// src/utils/formatTransferToContractScriptData.ts
|
43586
43713
|
var asm = __toESM(require_node());
|
43587
|
-
var formatTransferToContractScriptData = (
|
43588
|
-
const { assetId, amountToTransfer, hexlifiedContractId } = params;
|
43714
|
+
var formatTransferToContractScriptData = (transferParams) => {
|
43589
43715
|
const numberCoder = new BigNumberCoder("u64");
|
43590
|
-
|
43591
|
-
|
43592
|
-
|
43593
|
-
|
43594
|
-
|
43595
|
-
|
43596
|
-
|
43716
|
+
return transferParams.reduce((acc, transferParam) => {
|
43717
|
+
const { assetId, amount, contractId } = transferParam;
|
43718
|
+
const encoded = numberCoder.encode(new BN(amount).toNumber());
|
43719
|
+
const scriptData = concat([
|
43720
|
+
Address.fromAddressOrString(contractId).toBytes(),
|
43721
|
+
encoded,
|
43722
|
+
arrayify(assetId)
|
43723
|
+
]);
|
43724
|
+
return concat([acc, scriptData]);
|
43725
|
+
}, new Uint8Array());
|
43597
43726
|
};
|
43598
|
-
var assembleTransferToContractScript = async (
|
43599
|
-
const scriptData = formatTransferToContractScriptData(
|
43727
|
+
var assembleTransferToContractScript = async (transferParams) => {
|
43728
|
+
const scriptData = formatTransferToContractScriptData(transferParams);
|
43600
43729
|
await asm.initWasm();
|
43601
|
-
|
43602
|
-
|
43603
|
-
|
43604
|
-
|
43605
|
-
|
43606
|
-
|
43607
|
-
|
43608
|
-
|
43609
|
-
|
43610
|
-
|
43611
|
-
|
43612
|
-
|
43613
|
-
|
43614
|
-
|
43730
|
+
let script = new Uint8Array();
|
43731
|
+
transferParams.forEach((_, i) => {
|
43732
|
+
const offset = (CONTRACT_ID_LEN + WORD_SIZE + ASSET_ID_LEN) * i;
|
43733
|
+
script = concat([
|
43734
|
+
script,
|
43735
|
+
// Load ScriptData into register 0x10.
|
43736
|
+
asm.gtf(16, 0, asm.GTFArgs.ScriptData).to_bytes(),
|
43737
|
+
// Add the offset to 0x10 so it will point to the current contract ID, store in 0x11.
|
43738
|
+
asm.addi(17, 16, offset).to_bytes(),
|
43739
|
+
// Add CONTRACT_ID_LEN to 0x11 to point to the amount in the ScriptData, store in 0x12.
|
43740
|
+
asm.addi(18, 17, CONTRACT_ID_LEN).to_bytes(),
|
43741
|
+
// Load word to the amount at 0x12 into register 0x13.
|
43742
|
+
asm.lw(19, 18, 0).to_bytes(),
|
43743
|
+
// Add WORD_SIZE to 0x12 to point to the asset ID in the ScriptData, store in 0x14.
|
43744
|
+
asm.addi(20, 18, WORD_SIZE).to_bytes(),
|
43745
|
+
// Perform the transfer using contract ID in 0x11, amount in 0x13, and asset ID in 0x14.
|
43746
|
+
asm.tr(17, 19, 20).to_bytes()
|
43747
|
+
]);
|
43748
|
+
});
|
43749
|
+
script = concat([script, asm.ret(1).to_bytes()]);
|
43615
43750
|
return { script, scriptData };
|
43616
43751
|
};
|
43617
43752
|
|
@@ -43808,6 +43943,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
43808
43943
|
`The account ${this.address} does not have enough base asset funds to cover the transaction execution.`
|
43809
43944
|
);
|
43810
43945
|
}
|
43946
|
+
this.provider.validateTransaction(request);
|
43811
43947
|
request.updatePredicateGasUsed(estimatedPredicates);
|
43812
43948
|
const requestToReestimate = clone_default(request);
|
43813
43949
|
if (addedSignatures) {
|
@@ -43908,35 +44044,35 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
43908
44044
|
* @returns A promise that resolves to the transaction response.
|
43909
44045
|
*/
|
43910
44046
|
async transferToContract(contractId, amount, assetId, txParams = {}) {
|
43911
|
-
|
43912
|
-
|
43913
|
-
|
43914
|
-
"Transfer amount must be a positive number."
|
43915
|
-
);
|
43916
|
-
}
|
43917
|
-
const contractAddress = Address.fromAddressOrString(contractId);
|
43918
|
-
const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
|
43919
|
-
const { script, scriptData } = await assembleTransferToContractScript({
|
43920
|
-
hexlifiedContractId: contractAddress.toB256(),
|
43921
|
-
amountToTransfer: bn(amount),
|
43922
|
-
assetId: assetIdToTransfer
|
43923
|
-
});
|
44047
|
+
return this.batchTransferToContracts([{ amount, assetId, contractId }], txParams);
|
44048
|
+
}
|
44049
|
+
async batchTransferToContracts(contractTransferParams, txParams = {}) {
|
43924
44050
|
let request = new ScriptTransactionRequest({
|
43925
|
-
...txParams
|
43926
|
-
script,
|
43927
|
-
scriptData
|
43928
|
-
});
|
43929
|
-
request.addContractInputAndOutput(contractAddress);
|
43930
|
-
const txCost = await this.getTransactionCost(request, {
|
43931
|
-
quantities: [{ amount: bn(amount), assetId: String(assetIdToTransfer) }]
|
44051
|
+
...txParams
|
43932
44052
|
});
|
43933
|
-
|
43934
|
-
|
43935
|
-
|
43936
|
-
|
43937
|
-
|
44053
|
+
const quantities = [];
|
44054
|
+
const transferParams = contractTransferParams.map((transferParam) => {
|
44055
|
+
const amount = bn(transferParam.amount);
|
44056
|
+
const contractAddress = Address.fromAddressOrString(transferParam.contractId);
|
44057
|
+
const assetId = transferParam.assetId ? hexlify(transferParam.assetId) : this.provider.getBaseAssetId();
|
44058
|
+
if (amount.lte(0)) {
|
44059
|
+
throw new FuelError(
|
44060
|
+
ErrorCode.INVALID_TRANSFER_AMOUNT,
|
44061
|
+
"Transfer amount must be a positive number."
|
44062
|
+
);
|
44063
|
+
}
|
44064
|
+
request.addContractInputAndOutput(contractAddress);
|
44065
|
+
quantities.push({ amount, assetId });
|
44066
|
+
return {
|
44067
|
+
amount,
|
44068
|
+
contractId: contractAddress.toB256(),
|
44069
|
+
assetId
|
44070
|
+
};
|
43938
44071
|
});
|
43939
|
-
await
|
44072
|
+
const { script, scriptData } = await assembleTransferToContractScript(transferParams);
|
44073
|
+
request.script = script;
|
44074
|
+
request.scriptData = scriptData;
|
44075
|
+
request = await this.estimateAndFundTransaction(request, txParams, { quantities });
|
43940
44076
|
return this.sendTransaction(request);
|
43941
44077
|
}
|
43942
44078
|
/**
|
@@ -44115,9 +44251,9 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
44115
44251
|
}
|
44116
44252
|
}
|
44117
44253
|
/** @hidden * */
|
44118
|
-
async estimateAndFundTransaction(transactionRequest, txParams) {
|
44254
|
+
async estimateAndFundTransaction(transactionRequest, txParams, costParams) {
|
44119
44255
|
let request = transactionRequest;
|
44120
|
-
const txCost = await this.getTransactionCost(request);
|
44256
|
+
const txCost = await this.getTransactionCost(request, costParams);
|
44121
44257
|
request = this.validateGasLimitAndMaxFee({
|
44122
44258
|
transactionRequest: request,
|
44123
44259
|
gasUsed: txCost.gasUsed,
|
@@ -48942,6 +49078,208 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
48942
49078
|
var StorageAbstract = class {
|
48943
49079
|
};
|
48944
49080
|
|
49081
|
+
// src/utils/predicate-script-loader-instructions.ts
|
49082
|
+
var asm2 = __toESM(require_node());
|
49083
|
+
var BLOB_ID_SIZE = 32;
|
49084
|
+
var REG_ADDRESS_OF_DATA_AFTER_CODE = 16;
|
49085
|
+
var REG_START_OF_LOADED_CODE = 17;
|
49086
|
+
var REG_GENERAL_USE = 18;
|
49087
|
+
var WORD_SIZE2 = 8;
|
49088
|
+
function getDataOffset(binary) {
|
49089
|
+
const OFFSET_INDEX = 8;
|
49090
|
+
const dataView = new DataView(binary.buffer, OFFSET_INDEX, 8);
|
49091
|
+
const dataOffset = dataView.getBigUint64(0, false);
|
49092
|
+
return Number(dataOffset);
|
49093
|
+
}
|
49094
|
+
function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
|
49095
|
+
const { RegId, Instruction } = asm2;
|
49096
|
+
const REG_PC = RegId.pc().to_u8();
|
49097
|
+
const REG_SP = RegId.sp().to_u8();
|
49098
|
+
const REG_IS = RegId.is().to_u8();
|
49099
|
+
const getInstructions = (numOfInstructions2) => [
|
49100
|
+
// 1. Load the blob content into memory
|
49101
|
+
// Find the start of the hardcoded blob ID, which is located after the loader code ends.
|
49102
|
+
asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
|
49103
|
+
// hold the address of the blob ID.
|
49104
|
+
asm2.addi(
|
49105
|
+
REG_ADDRESS_OF_DATA_AFTER_CODE,
|
49106
|
+
REG_ADDRESS_OF_DATA_AFTER_CODE,
|
49107
|
+
numOfInstructions2 * Instruction.size()
|
49108
|
+
),
|
49109
|
+
// The code is going to be loaded from the current value of SP onwards, save
|
49110
|
+
// the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
|
49111
|
+
asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
|
49112
|
+
// REG_GENERAL_USE to hold the size of the blob.
|
49113
|
+
asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
|
49114
|
+
// Push the blob contents onto the stack.
|
49115
|
+
asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
|
49116
|
+
// Move on to the data section length
|
49117
|
+
asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, BLOB_ID_SIZE),
|
49118
|
+
// load the size of the data section into REG_GENERAL_USE
|
49119
|
+
asm2.lw(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE, 0),
|
49120
|
+
// after we have read the length of the data section, we move the pointer to the actual
|
49121
|
+
// data by skipping WORD_SIZE bytes.
|
49122
|
+
asm2.addi(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_ADDRESS_OF_DATA_AFTER_CODE, WORD_SIZE2),
|
49123
|
+
// load the data section of the executable
|
49124
|
+
asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 2),
|
49125
|
+
// Jump into the memory where the contract is loaded.
|
49126
|
+
// What follows is called _jmp_mem by the sway compiler.
|
49127
|
+
// Subtract the address contained in IS because jmp will add it back.
|
49128
|
+
asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
|
49129
|
+
// jmp will multiply by 4, so we need to divide to cancel that out.
|
49130
|
+
asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
|
49131
|
+
// Jump to the start of the contract we loaded.
|
49132
|
+
asm2.jmp(REG_START_OF_LOADED_CODE)
|
49133
|
+
];
|
49134
|
+
const getInstructionsNoDataSection = (numOfInstructions2) => [
|
49135
|
+
// 1. Load the blob content into memory
|
49136
|
+
// Find the start of the hardcoded blob ID, which is located after the loader code ends.
|
49137
|
+
// 1. Load the blob content into memory
|
49138
|
+
// Find the start of the hardcoded blob ID, which is located after the loader code ends.
|
49139
|
+
asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
|
49140
|
+
// hold the address of the blob ID.
|
49141
|
+
asm2.addi(
|
49142
|
+
REG_ADDRESS_OF_DATA_AFTER_CODE,
|
49143
|
+
REG_ADDRESS_OF_DATA_AFTER_CODE,
|
49144
|
+
numOfInstructions2 * Instruction.size()
|
49145
|
+
),
|
49146
|
+
// The code is going to be loaded from the current value of SP onwards, save
|
49147
|
+
// the location into REG_START_OF_LOADED_CODE so we can jump into it at the end.
|
49148
|
+
asm2.move_(REG_START_OF_LOADED_CODE, REG_SP),
|
49149
|
+
// REG_GENERAL_USE to hold the size of the blob.
|
49150
|
+
asm2.bsiz(REG_GENERAL_USE, REG_ADDRESS_OF_DATA_AFTER_CODE),
|
49151
|
+
// Push the blob contents onto the stack.
|
49152
|
+
asm2.ldc(REG_ADDRESS_OF_DATA_AFTER_CODE, 0, REG_GENERAL_USE, 1),
|
49153
|
+
// Jump into the memory where the contract is loaded.
|
49154
|
+
// What follows is called _jmp_mem by the sway compiler.
|
49155
|
+
// Subtract the address contained in IS because jmp will add it back.
|
49156
|
+
asm2.sub(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, REG_IS),
|
49157
|
+
// jmp will multiply by 4, so we need to divide to cancel that out.
|
49158
|
+
asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
|
49159
|
+
// Jump to the start of the contract we loaded.
|
49160
|
+
asm2.jmp(REG_START_OF_LOADED_CODE)
|
49161
|
+
];
|
49162
|
+
const offset = getDataOffset(originalBinary);
|
49163
|
+
if (originalBinary.length < offset) {
|
49164
|
+
throw new Error(
|
49165
|
+
`Data section offset is out of bounds, offset: ${offset}, binary length: ${originalBinary.length}`
|
49166
|
+
);
|
49167
|
+
}
|
49168
|
+
const dataSection = originalBinary.slice(offset);
|
49169
|
+
if (dataSection.length > 0) {
|
49170
|
+
const numOfInstructions2 = getInstructions(0).length;
|
49171
|
+
if (numOfInstructions2 > 65535) {
|
49172
|
+
throw new Error("Too many instructions, exceeding u16::MAX.");
|
49173
|
+
}
|
49174
|
+
const instructionBytes2 = new Uint8Array(
|
49175
|
+
getInstructions(numOfInstructions2).flatMap(
|
49176
|
+
(instruction) => Array.from(instruction.to_bytes())
|
49177
|
+
)
|
49178
|
+
);
|
49179
|
+
const blobBytes2 = new Uint8Array(blobId);
|
49180
|
+
const dataSectionLenBytes = new Uint8Array(8);
|
49181
|
+
const dataView = new DataView(dataSectionLenBytes.buffer);
|
49182
|
+
dataView.setBigUint64(0, BigInt(dataSection.length), false);
|
49183
|
+
const loaderBytecode2 = new Uint8Array([
|
49184
|
+
...instructionBytes2,
|
49185
|
+
...blobBytes2,
|
49186
|
+
...dataSectionLenBytes
|
49187
|
+
]);
|
49188
|
+
return {
|
49189
|
+
loaderBytecode: concat([loaderBytecode2, dataSection]),
|
49190
|
+
blobOffset: loaderBytecode2.length
|
49191
|
+
};
|
49192
|
+
}
|
49193
|
+
const numOfInstructions = getInstructionsNoDataSection(0).length;
|
49194
|
+
if (numOfInstructions > 65535) {
|
49195
|
+
throw new Error("Too many instructions, exceeding u16::MAX.");
|
49196
|
+
}
|
49197
|
+
const instructionBytes = new Uint8Array(
|
49198
|
+
getInstructionsNoDataSection(numOfInstructions).flatMap(
|
49199
|
+
(instruction) => Array.from(instruction.to_bytes())
|
49200
|
+
)
|
49201
|
+
);
|
49202
|
+
const blobBytes = new Uint8Array(blobId);
|
49203
|
+
const loaderBytecode = new Uint8Array([...instructionBytes, ...blobBytes]);
|
49204
|
+
return { loaderBytecode };
|
49205
|
+
}
|
49206
|
+
|
49207
|
+
// src/utils/deployScriptOrPredicate.ts
|
49208
|
+
async function fundBlobTx(deployer, blobTxRequest) {
|
49209
|
+
let totalCost = bn(0);
|
49210
|
+
const chainInfo = deployer.provider.getChain();
|
49211
|
+
const gasPrice = await deployer.provider.estimateGasPrice(10);
|
49212
|
+
const priceFactor = chainInfo.consensusParameters.feeParameters.gasPriceFactor;
|
49213
|
+
const minGas = blobTxRequest.calculateMinGas(chainInfo);
|
49214
|
+
const minFee = calculateGasFee({
|
49215
|
+
gasPrice,
|
49216
|
+
gas: minGas,
|
49217
|
+
priceFactor,
|
49218
|
+
tip: blobTxRequest.tip
|
49219
|
+
}).add(1);
|
49220
|
+
totalCost = totalCost.add(minFee);
|
49221
|
+
if (totalCost.gt(await deployer.getBalance())) {
|
49222
|
+
throw new FuelError(ErrorCode.FUNDS_TOO_LOW, "Insufficient balance to deploy predicate.");
|
49223
|
+
}
|
49224
|
+
const txCost = await deployer.getTransactionCost(blobTxRequest);
|
49225
|
+
blobTxRequest.maxFee = txCost.maxFee;
|
49226
|
+
return deployer.fund(blobTxRequest, txCost);
|
49227
|
+
}
|
49228
|
+
function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
|
49229
|
+
const { configurables: readOnlyConfigurables } = jsonAbi;
|
49230
|
+
const configurables = [];
|
49231
|
+
readOnlyConfigurables.forEach((config) => {
|
49232
|
+
configurables.push({ ...config, offset: config.offset - configurableOffsetDiff });
|
49233
|
+
});
|
49234
|
+
return { ...jsonAbi, configurables };
|
49235
|
+
}
|
49236
|
+
async function deployScriptOrPredicate({
|
49237
|
+
deployer,
|
49238
|
+
bytecode,
|
49239
|
+
abi,
|
49240
|
+
loaderInstanceCallback
|
49241
|
+
}) {
|
49242
|
+
const dataSectionOffset = getDataOffset(arrayify(bytecode));
|
49243
|
+
const byteCodeWithoutDataSection = bytecode.slice(0, dataSectionOffset);
|
49244
|
+
const blobId = hash2(byteCodeWithoutDataSection);
|
49245
|
+
const blobTxRequest = new BlobTransactionRequest({
|
49246
|
+
blobId,
|
49247
|
+
witnessIndex: 0,
|
49248
|
+
witnesses: [byteCodeWithoutDataSection]
|
49249
|
+
});
|
49250
|
+
const { loaderBytecode, blobOffset } = getPredicateScriptLoaderInstructions(
|
49251
|
+
arrayify(bytecode),
|
49252
|
+
arrayify(blobId)
|
49253
|
+
);
|
49254
|
+
const configurableOffsetDiff = byteCodeWithoutDataSection.length - (blobOffset || 0);
|
49255
|
+
const newAbi = adjustConfigurableOffsets(abi, configurableOffsetDiff);
|
49256
|
+
const blobExists = (await deployer.provider.getBlobs([blobId])).length > 0;
|
49257
|
+
const loaderInstance = loaderInstanceCallback(loaderBytecode, newAbi);
|
49258
|
+
if (blobExists) {
|
49259
|
+
return {
|
49260
|
+
waitForResult: () => Promise.resolve(loaderInstance),
|
49261
|
+
blobId
|
49262
|
+
};
|
49263
|
+
}
|
49264
|
+
const fundedBlobRequest = await fundBlobTx(deployer, blobTxRequest);
|
49265
|
+
const waitForResult = async () => {
|
49266
|
+
try {
|
49267
|
+
const blobTx = await deployer.sendTransaction(fundedBlobRequest);
|
49268
|
+
const result = await blobTx.waitForResult();
|
49269
|
+
if (result.status !== "success" /* success */) {
|
49270
|
+
throw new Error();
|
49271
|
+
}
|
49272
|
+
} catch (err) {
|
49273
|
+
throw new FuelError(ErrorCode.TRANSACTION_FAILED, "Failed to deploy predicate chunk");
|
49274
|
+
}
|
49275
|
+
return loaderInstance;
|
49276
|
+
};
|
49277
|
+
return {
|
49278
|
+
waitForResult,
|
49279
|
+
blobId
|
49280
|
+
};
|
49281
|
+
}
|
49282
|
+
|
48945
49283
|
// ../merkle/dist/index.mjs
|
48946
49284
|
var EMPTY = "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
|
48947
49285
|
var Node = class {
|
@@ -49010,17 +49348,10 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49010
49348
|
};
|
49011
49349
|
|
49012
49350
|
// src/predicate/predicate.ts
|
49013
|
-
function getDataOffset(binary) {
|
49014
|
-
const buffer = binary.buffer.slice(binary.byteOffset + 8, binary.byteOffset + 16);
|
49015
|
-
const dataView = new DataView(buffer);
|
49016
|
-
const dataOffset = dataView.getBigUint64(0, false);
|
49017
|
-
return Number(dataOffset);
|
49018
|
-
}
|
49019
49351
|
var Predicate = class extends Account {
|
49020
49352
|
bytes;
|
49021
49353
|
predicateData = [];
|
49022
49354
|
interface;
|
49023
|
-
loaderBytecode = "";
|
49024
49355
|
/**
|
49025
49356
|
* Creates an instance of the Predicate class.
|
49026
49357
|
*
|
@@ -49035,13 +49366,7 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49035
49366
|
abi,
|
49036
49367
|
provider,
|
49037
49368
|
data,
|
49038
|
-
configurableConstants
|
49039
|
-
/**
|
49040
|
-
* TODO: Implement a getBytes method within the Predicate class. This method should return the loaderBytecode if it is set.
|
49041
|
-
* The getBytes method should be used in all places where we use this.bytes.
|
49042
|
-
* Note: Do not set loaderBytecode to a default string here; it should remain undefined when not provided.
|
49043
|
-
*/
|
49044
|
-
loaderBytecode = ""
|
49369
|
+
configurableConstants
|
49045
49370
|
}) {
|
49046
49371
|
const { predicateBytes, predicateInterface } = Predicate.processPredicateData(
|
49047
49372
|
bytecode,
|
@@ -49052,7 +49377,6 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49052
49377
|
super(address, provider);
|
49053
49378
|
this.bytes = predicateBytes;
|
49054
49379
|
this.interface = predicateInterface;
|
49055
|
-
this.loaderBytecode = loaderBytecode;
|
49056
49380
|
if (data !== void 0 && data.length > 0) {
|
49057
49381
|
this.predicateData = data;
|
49058
49382
|
}
|
@@ -49115,15 +49439,12 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49115
49439
|
*/
|
49116
49440
|
static processPredicateData(bytes2, jsonAbi, configurableConstants) {
|
49117
49441
|
let predicateBytes = arrayify(bytes2);
|
49118
|
-
|
49119
|
-
if (
|
49120
|
-
|
49121
|
-
|
49122
|
-
|
49123
|
-
|
49124
|
-
'Cannot use ABI without "main" function.'
|
49125
|
-
);
|
49126
|
-
}
|
49442
|
+
const abiInterface = new Interface(jsonAbi);
|
49443
|
+
if (abiInterface.functions.main === void 0) {
|
49444
|
+
throw new FuelError(
|
49445
|
+
ErrorCode.ABI_MAIN_METHOD_MISSING,
|
49446
|
+
'Cannot use ABI without "main" function.'
|
49447
|
+
);
|
49127
49448
|
}
|
49128
49449
|
if (configurableConstants && Object.keys(configurableConstants).length) {
|
49129
49450
|
predicateBytes = Predicate.setConfigurableConstants(
|
@@ -49177,15 +49498,9 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49177
49498
|
* @param abiInterface - The ABI interface of the predicate.
|
49178
49499
|
* @returns The mutated bytes with the configurable constants set.
|
49179
49500
|
*/
|
49180
|
-
static setConfigurableConstants(bytes2, configurableConstants, abiInterface
|
49501
|
+
static setConfigurableConstants(bytes2, configurableConstants, abiInterface) {
|
49181
49502
|
const mutatedBytes = bytes2;
|
49182
49503
|
try {
|
49183
|
-
if (!abiInterface) {
|
49184
|
-
throw new FuelError(
|
49185
|
-
ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
|
49186
|
-
"Cannot validate configurable constants because the Predicate was instantiated without a JSON ABI"
|
49187
|
-
);
|
49188
|
-
}
|
49189
49504
|
if (Object.keys(abiInterface.configurables).length === 0) {
|
49190
49505
|
throw new FuelError(
|
49191
49506
|
ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
|
@@ -49203,15 +49518,6 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49203
49518
|
const encoded = abiInterface.encodeConfigurable(key, value);
|
49204
49519
|
mutatedBytes.set(encoded, offset);
|
49205
49520
|
});
|
49206
|
-
if (loaderBytecode) {
|
49207
|
-
const offset = getDataOffset(bytes2);
|
49208
|
-
const dataSection = mutatedBytes.slice(offset);
|
49209
|
-
const dataSectionLen = dataSection.length;
|
49210
|
-
const dataSectionLenBytes = new Uint8Array(8);
|
49211
|
-
const dataSectionLenDataView = new DataView(dataSectionLenBytes.buffer);
|
49212
|
-
dataSectionLenDataView.setBigUint64(0, BigInt(dataSectionLen), false);
|
49213
|
-
mutatedBytes.set(concat([loaderBytecode, dataSectionLenBytes, dataSection]));
|
49214
|
-
}
|
49215
49521
|
} catch (err) {
|
49216
49522
|
throw new FuelError(
|
49217
49523
|
ErrorCode.INVALID_CONFIGURABLE_CONSTANTS,
|
@@ -49242,6 +49548,28 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49242
49548
|
}
|
49243
49549
|
return index;
|
49244
49550
|
}
|
49551
|
+
/**
|
49552
|
+
*
|
49553
|
+
* @param account - The account used to pay the deployment costs.
|
49554
|
+
* @returns The _blobId_ and a _waitForResult_ callback that returns the deployed predicate
|
49555
|
+
* once the blob deployment transaction finishes.
|
49556
|
+
*
|
49557
|
+
* The returned loader predicate will have the same configurable constants
|
49558
|
+
* as the original predicate which was used to generate the loader predicate.
|
49559
|
+
*/
|
49560
|
+
async deploy(account) {
|
49561
|
+
return deployScriptOrPredicate({
|
49562
|
+
deployer: account,
|
49563
|
+
abi: this.interface.jsonAbi,
|
49564
|
+
bytecode: this.bytes,
|
49565
|
+
loaderInstanceCallback: (loaderBytecode, newAbi) => new Predicate({
|
49566
|
+
bytecode: loaderBytecode,
|
49567
|
+
abi: newAbi,
|
49568
|
+
provider: this.provider,
|
49569
|
+
data: this.predicateData
|
49570
|
+
})
|
49571
|
+
});
|
49572
|
+
}
|
49245
49573
|
};
|
49246
49574
|
|
49247
49575
|
// src/connectors/fuel-connector.ts
|
@@ -49607,8 +49935,9 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
49607
49935
|
}
|
49608
49936
|
async initialize() {
|
49609
49937
|
try {
|
49610
|
-
|
49938
|
+
const connectResponse = this.setDefaultConnector();
|
49611
49939
|
this._targetUnsubscribe = this.setupConnectorListener();
|
49940
|
+
await connectResponse;
|
49612
49941
|
} catch (error) {
|
49613
49942
|
throw new FuelError(ErrorCode.INVALID_PROVIDER, "Error initializing Fuel Connector");
|
49614
49943
|
}
|