@coti-io/coti-contracts 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.github/workflows/npm-publish.yml +2 -1
  2. package/CONTRIBUTING.md +2 -2
  3. package/LICENSE +1 -1
  4. package/README.md +18 -35
  5. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +112 -0
  6. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +152 -0
  7. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +11 -1
  8. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +8 -0
  9. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +33 -4
  10. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +35 -10
  11. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +126 -0
  12. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +3 -0
  13. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +222 -0
  14. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +222 -0
  15. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +223 -0
  16. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +222 -0
  17. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +265 -0
  18. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +281 -0
  19. package/contracts/token/PrivateERC20/PrivateERC20.sol +1 -1
  20. package/contracts/token/PrivateERC721/IERC721Errors.sol +57 -0
  21. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  22. package/contracts/utils/mpc/MpcCore.sol +40 -0
  23. package/contracts/utils/mpc/MpcInterface.sol +2 -0
  24. package/hardhat.config.ts +9 -1
  25. package/package.json +20 -4
  26. package/test/onboard/AccountOnboard.test.ts +2 -2
  27. package/test/token/PrivateERC20/PrivateERC20.test.ts +2 -2
  28. package/test/utils/accounts.ts +2 -2
  29. package/test/utils/mpc/Precompile.test.ts +24 -2
  30. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +0 -2
  31. package/typechain-types/contracts/GasTest.ts +91 -0
  32. package/typechain-types/contracts/mocks/utils/mpc/ArithmeticTestsContract.ts +66 -0
  33. package/typechain-types/contracts/mocks/utils/mpc/BitwiseTestsContract.ts +6 -0
  34. package/typechain-types/contracts/mocks/utils/mpc/Comparison2TestsContract.ts +6 -0
  35. package/typechain-types/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.ts +36 -6
  36. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract.ts +251 -0
  37. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract.ts +250 -0
  38. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  39. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.ts +389 -0
  40. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.ts +391 -0
  41. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.ts +391 -0
  42. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract.ts +391 -0
  43. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract.ts +391 -0
  44. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  45. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.ts +391 -0
  46. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.ts +391 -0
  47. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.ts +306 -0
  48. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract.ts +125 -0
  49. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract.ts +125 -0
  50. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  51. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.ts +296 -0
  52. package/typechain-types/contracts/mocks/utils/mpc/index.ts +7 -0
  53. package/typechain-types/contracts/token/PrivateERC721/IERC721Errors.ts +69 -0
  54. package/typechain-types/contracts/token/PrivateERC721/index.ts +1 -0
  55. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +38 -0
  56. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +0 -1
  57. package/typechain-types/factories/contracts/GasTest__factory.ts +75 -0
  58. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  59. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +1 -1
  60. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  61. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +73 -1
  62. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +11 -1
  63. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  64. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +11 -1
  65. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  66. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  67. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  68. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +26 -30
  69. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  70. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  71. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  72. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  73. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowance64TestsContract__factory.ts +294 -0
  74. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +292 -0
  75. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract.sol/index.ts +5 -0
  76. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64TestsContract__factory.ts +720 -0
  77. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +724 -0
  78. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +724 -0
  79. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  80. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  81. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol/index.ts +5 -0
  82. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +724 -0
  83. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +724 -0
  84. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +507 -0
  85. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferTestsContract__factory.ts +150 -0
  86. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/TransferWithAllowanceTestsContract__factory.ts +150 -0
  87. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol/index.ts +5 -0
  88. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +434 -0
  89. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +7 -0
  90. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +1 -1
  91. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  92. package/typechain-types/factories/contracts/token/PrivateERC721/IERC721Errors__factory.ts +128 -0
  93. package/typechain-types/factories/contracts/token/PrivateERC721/index.ts +1 -0
  94. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  95. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +58 -0
  96. package/typechain-types/hardhat.d.ts +144 -54
  97. package/typechain-types/index.ts +16 -6
  98. package/contracts/access/DataPrivacyFramework/README.md +0 -68
  99. package/contracts/onboard/README.md +0 -65
  100. package/contracts/token/PrivateERC20/README.md +0 -104
  101. package/contracts/token/PrivateERC721/README.md +0 -282
  102. package/contracts/utils/mpc/README.md +0 -82
@@ -51,6 +51,8 @@ export interface ExtendedOperationsInterface extends Interface {
51
51
  | "RandBoundedBits"
52
52
  | "Rem"
53
53
  | "SetPublic"
54
+ | "Shl"
55
+ | "Shr"
54
56
  | "Sub"
55
57
  | "Transfer"
56
58
  | "TransferWithAllowance"
@@ -167,6 +169,14 @@ export interface ExtendedOperationsInterface extends Interface {
167
169
  functionFragment: "SetPublic",
168
170
  values: [BytesLike, BigNumberish]
169
171
  ): string;
172
+ encodeFunctionData(
173
+ functionFragment: "Shl",
174
+ values: [BytesLike, BigNumberish, BigNumberish]
175
+ ): string;
176
+ encodeFunctionData(
177
+ functionFragment: "Shr",
178
+ values: [BytesLike, BigNumberish, BigNumberish]
179
+ ): string;
170
180
  encodeFunctionData(
171
181
  functionFragment: "Sub",
172
182
  values: [BytesLike, BigNumberish, BigNumberish]
@@ -225,6 +235,8 @@ export interface ExtendedOperationsInterface extends Interface {
225
235
  ): Result;
226
236
  decodeFunctionResult(functionFragment: "Rem", data: BytesLike): Result;
227
237
  decodeFunctionResult(functionFragment: "SetPublic", data: BytesLike): Result;
238
+ decodeFunctionResult(functionFragment: "Shl", data: BytesLike): Result;
239
+ decodeFunctionResult(functionFragment: "Shr", data: BytesLike): Result;
228
240
  decodeFunctionResult(functionFragment: "Sub", data: BytesLike): Result;
229
241
  decodeFunctionResult(functionFragment: "Transfer", data: BytesLike): Result;
230
242
  decodeFunctionResult(
@@ -445,6 +457,18 @@ export interface ExtendedOperations extends BaseContract {
445
457
  "nonpayable"
446
458
  >;
447
459
 
460
+ Shl: TypedContractMethod<
461
+ [metaData: BytesLike, lhs: BigNumberish, rhs: BigNumberish],
462
+ [bigint],
463
+ "nonpayable"
464
+ >;
465
+
466
+ Shr: TypedContractMethod<
467
+ [metaData: BytesLike, lhs: BigNumberish, rhs: BigNumberish],
468
+ [bigint],
469
+ "nonpayable"
470
+ >;
471
+
448
472
  Sub: TypedContractMethod<
449
473
  [metaData: BytesLike, lhs: BigNumberish, rhs: BigNumberish],
450
474
  [bigint],
@@ -681,6 +705,20 @@ export interface ExtendedOperations extends BaseContract {
681
705
  [bigint],
682
706
  "nonpayable"
683
707
  >;
708
+ getFunction(
709
+ nameOrSignature: "Shl"
710
+ ): TypedContractMethod<
711
+ [metaData: BytesLike, lhs: BigNumberish, rhs: BigNumberish],
712
+ [bigint],
713
+ "nonpayable"
714
+ >;
715
+ getFunction(
716
+ nameOrSignature: "Shr"
717
+ ): TypedContractMethod<
718
+ [metaData: BytesLike, lhs: BigNumberish, rhs: BigNumberish],
719
+ [bigint],
720
+ "nonpayable"
721
+ >;
684
722
  getFunction(
685
723
  nameOrSignature: "Sub"
686
724
  ): TypedContractMethod<
@@ -1,5 +1,4 @@
1
1
  /* Autogenerated file. Do not edit manually. */
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
- export * as draftIerc6093Sol from "./draft-IERC6093.sol";
5
4
  export { IERC4906__factory } from "./IERC4906__factory";
@@ -0,0 +1,75 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import {
5
+ Contract,
6
+ ContractFactory,
7
+ ContractTransactionResponse,
8
+ Interface,
9
+ } from "ethers";
10
+ import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
11
+ import type { NonPayableOverrides } from "../../common";
12
+ import type { GasTest, GasTestInterface } from "../../contracts/GasTest";
13
+
14
+ const _abi = [
15
+ {
16
+ inputs: [],
17
+ name: "test1",
18
+ outputs: [],
19
+ stateMutability: "nonpayable",
20
+ type: "function",
21
+ },
22
+ {
23
+ inputs: [],
24
+ name: "test2",
25
+ outputs: [],
26
+ stateMutability: "nonpayable",
27
+ type: "function",
28
+ },
29
+ ] as const;
30
+
31
+ const _bytecode =
32
+ "0x608060405234801561001057600080fd5b506102d0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806366e41cb71461003b5780636b59084d14610045575b600080fd5b61004361004d565b005b61004361006a565b60006100596002610072565b9050610066816001610126565b5050565b600061006660025b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b60906044016020604051808303816000875af11580156100fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101209190610281565b92915050565b600060646339bd1d8d61013c60048060026101f5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905267ffffffffffffffff851660448201526064016020604051808303816000875af11580156101ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ee9190610281565b9392505050565b600081600281111561020957610209610252565b60ff16600884600481111561022057610220610252565b61ffff16901b61ffff16601086600481111561023e5761023e610252565b62ffffff16901b171760e81b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561029357600080fd5b505191905056fea264697066735822122024b86f1e2c83704d02af06383a52cfa1bb753ac769faefd6871f17140246e1f564736f6c63430008130033";
33
+
34
+ type GasTestConstructorParams =
35
+ | [signer?: Signer]
36
+ | ConstructorParameters<typeof ContractFactory>;
37
+
38
+ const isSuperArgs = (
39
+ xs: GasTestConstructorParams
40
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
41
+
42
+ export class GasTest__factory extends ContractFactory {
43
+ constructor(...args: GasTestConstructorParams) {
44
+ if (isSuperArgs(args)) {
45
+ super(...args);
46
+ } else {
47
+ super(_abi, _bytecode, args[0]);
48
+ }
49
+ }
50
+
51
+ override getDeployTransaction(
52
+ overrides?: NonPayableOverrides & { from?: string }
53
+ ): Promise<ContractDeployTransaction> {
54
+ return super.getDeployTransaction(overrides || {});
55
+ }
56
+ override deploy(overrides?: NonPayableOverrides & { from?: string }) {
57
+ return super.deploy(overrides || {}) as Promise<
58
+ GasTest & {
59
+ deploymentTransaction(): ContractTransactionResponse;
60
+ }
61
+ >;
62
+ }
63
+ override connect(runner: ContractRunner | null): GasTest__factory {
64
+ return super.connect(runner) as GasTest__factory;
65
+ }
66
+
67
+ static readonly bytecode = _bytecode;
68
+ static readonly abi = _abi;
69
+ static createInterface(): GasTestInterface {
70
+ return new Interface(_abi) as GasTestInterface;
71
+ }
72
+ static connect(address: string, runner?: ContractRunner | null): GasTest {
73
+ return new Contract(address, _abi, runner) as unknown as GasTest;
74
+ }
75
+ }
@@ -615,7 +615,7 @@ const _abi = [
615
615
  ] as const;
616
616
 
617
617
  const _bytecode =
618
- "0x608060405260016005553480156200001657600080fd5b50600180816000806101000a81548160ff02191690831515021790555080600060016101000a81548160ff0219169083151502179055506001806040516200005e90620008ca565b908152602001604051809103902060006101000a81548160ff021916908315150217905550620001566040518061014001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600581526020017f61646d696e0000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620002a160201b60201c565b506001806040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516200019f91906200094f565b908152602001604051809103902060006101000a81548160ff02191690831515021790555062000298604051806101400160405280600173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152508152602001600115158152602001600081526020016000815260200160001515815260200160001515815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052806000815250815250620002a160201b60201c565b50505062000d68565b60008060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208360200151604051620002fb91906200094f565b90815260200160405180910390205403620005fe5760055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516200036a91906200094f565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081620004a3919062000bd7565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061014082015181600801908162000583919062000bd7565b50905050600560008154620005989062000ced565b9190508190555060036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620005f19062000ced565b9190508190555062000866565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085602001516040516200065b91906200094f565b90815260200160405180910390205481526020019081526020016000209050826040015180156200069b57508060030160009054906101000a900460ff16155b15620006fb5760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620006f39062000ced565b919050819055505b82604001511580156200071c57508060030160009054906101000a900460ff165b156200077c5760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154620007749062000d3a565b919050819055505b82604001518160030160006101000a81548160ff02191690831515021790555082606001518160040181905550826080015181600501819055508260a001518160030160016101000a81548160ff0219169083151502179055508260c001518160030160026101000a81548160ff0219169083151502179055508260e0015181600601819055508261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082610120015181600801908162000863919062000bd7565b50505b60019050919050565b600081905092915050565b7f61646d696e000000000000000000000000000000000000000000000000000000600082015250565b6000620008b26005836200086f565b9150620008bf826200087a565b600582019050919050565b6000620008d782620008a3565b9150819050919050565b600081519050919050565b60005b838110156200090c578082015181840152602081019050620008ef565b60008484015250505050565b60006200092582620008e1565b6200093181856200086f565b935062000943818560208601620008ec565b80840191505092915050565b60006200095d828462000918565b915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009df57607f821691505b602082108103620009f557620009f462000997565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a20565b62000a6b868362000a20565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ab862000ab262000aac8462000a83565b62000a8d565b62000a83565b9050919050565b6000819050919050565b62000ad48362000a97565b62000aec62000ae38262000abf565b84845462000a2d565b825550505050565b600090565b62000b0362000af4565b62000b1081848462000ac9565b505050565b5b8181101562000b385762000b2c60008262000af9565b60018101905062000b16565b5050565b601f82111562000b875762000b5181620009fb565b62000b5c8462000a10565b8101602085101562000b6c578190505b62000b8462000b7b8562000a10565b83018262000b15565b50505b505050565b600082821c905092915050565b600062000bac6000198460080262000b8c565b1980831691505092915050565b600062000bc7838362000b99565b9150826002028217905092915050565b62000be282620008e1565b67ffffffffffffffff81111562000bfe5762000bfd62000968565b5b62000c0a8254620009c6565b62000c1782828562000b3c565b600060209050601f83116001811462000c4f576000841562000c3a578287015190505b62000c46858262000bb9565b86555062000cb6565b601f19841662000c5f86620009fb565b60005b8281101562000c895784890151825560018201915060208501945060208101905062000c62565b8683101562000ca9578489015162000ca5601f89168262000b99565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cfa8262000a83565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000d2f5762000d2e62000cbe565b5b600182019050919050565b600062000d478262000a83565b91506000820362000d5d5762000d5c62000cbe565b5b600182039050919050565b613d808062000d786000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063a7804d65116100b8578063f28b9f341161007c578063f28b9f341461041b578063f558936414610439578063f9529ee214610469578063fa1b3cac14610499578063fac66f01146104b7578063fb83bb73146104e757610142565b8063a7804d651461033d578063ade0bee41461036d578063c6064b281461039d578063c8d757fd146103cd578063efdcec9c146103fd57610142565b8063661957011161010a5780636619570114610241578063699d7c331461025f57806382dab96e1461028f5780639359c287146102bf578063a5fcf162146102ef578063a74d34391461030d57610142565b806326c500071461014757806334906a4a14610181578063372db089146101b1578063476a95ad146101e157806365c5815214610211575b600080fd5b610161600480360381019061015c91906129a4565b610517565b6040516101789b9a99989796959493929190612acc565b60405180910390f35b61019b60048036038101906101969190612cba565b6106e8565b6040516101a89190612d03565b60405180910390f35b6101cb60048036038101906101c69190612daa565b61071e565b6040516101d89190612d03565b60405180910390f35b6101fb60048036038101906101f69190612e4a565b61074a565b6040516102089190612d03565b60405180910390f35b61022b60048036038101906102269190612cba565b6107c1565b6040516102389190612d03565b60405180910390f35b61024961086f565b6040516102569190612e77565b60405180910390f35b61027960048036038101906102749190612e92565b610885565b6040516102869190612d03565b60405180910390f35b6102a960048036038101906102a4919061302a565b6108b0565b6040516102b69190612d03565b60405180910390f35b6102d960048036038101906102d49190612cba565b610e64565b6040516102e69190612d03565b60405180910390f35b6102f7610f11565b6040516103049190612d03565b60405180910390f35b61032760048036038101906103229190613073565b610f22565b6040516103349190612d03565b60405180910390f35b61035760048036038101906103529190613108565b610f84565b6040516103649190612e77565b60405180910390f35b61038760048036038101906103829190612e4a565b610f9c565b6040516103949190612d03565b60405180910390f35b6103b760048036038101906103b29190613135565b611016565b6040516103c49190612d03565b60405180910390f35b6103e760048036038101906103e291906131a9565b611042565b6040516103f49190612e77565b60405180910390f35b61040561107d565b6040516104129190613205565b60405180910390f35b6104236110b6565b6040516104309190612d03565b60405180910390f35b610453600480360381019061044e9190612cba565b6110c9565b6040516104609190612d03565b60405180910390f35b610483600480360381019061047e9190613227565b6110ff565b6040516104909190612d03565b60405180910390f35b6104a16111b1565b6040516104ae9190613274565b60405180910390f35b6104d160048036038101906104cc919061328f565b6111b6565b6040516104de91906134fe565b60405180910390f35b61050160048036038101906104fc9190613227565b6115fd565b60405161050e9190612d03565b60405180910390f35b60066020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546105669061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546105929061354f565b80156105df5780601f106105b4576101008083540402835291602001916105df565b820191906000526020600020905b8154815290600101906020018083116105c257829003601f168201915b5050505050908060030160009054906101000a900460ff16908060030160019054906101000a900460ff16908060030160029054906101000a900460ff16908060040154908060050154908060060154908060070160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060080180546106659061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546106919061354f565b80156106de5780601f106106b3576101008083540402835291602001916106de565b820191906000526020600020905b8154815290600101906020018083116106c157829003601f168201915b505050505090508b565b6001818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b60006107408585856001866000604051806020016040528060008152506116af565b9050949350505050565b600081151560008054906101000a900460ff1615150361079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906135cc565b60405180910390fd5b816000806101000a81548160ff02191690831515021790555060019050919050565b60006002826040516107d39190613628565b908152602001604051809103902060009054906101000a900460ff161561082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610826906136b1565b60405180910390fd5b60016002836040516108419190613628565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060019050919050565b600060016005546108809190613700565b905090565b60006108a78484846000806000604051806020016040528060008152506116af565b90509392505050565b60008060046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516109089190613628565b90815260200160405180910390205403610bff5760055460046000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083602001516040516109749190613628565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081610aab91906138e0565b5060608201518160030160006101000a81548160ff02191690831515021790555060808201518160030160016101000a81548160ff02191690831515021790555060a08201518160030160026101000a81548160ff02191690831515021790555060c0820151816004015560e0820151816005015561010082015181600601556101208201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610140820151816008019081610b8991906138e0565b50905050600560008154610b9c906139b2565b9190508190555060036000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610bf3906139b2565b91905081905550610e5b565b60006006600060046000866000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208560200151604051610c5a9190613628565b9081526020016040518091039020548152602001908152602001600020905082604001518015610c9957508060030160009054906101000a900460ff16155b15610cf65760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610cee906139b2565b919050819055505b8260400151158015610d1657508060030160009054906101000a900460ff165b15610d735760036000846000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154610d6b906139fa565b919050819055505b82604001518160030160006101000a81548160ff02191690831515021790555082606001518160040181905550826080015181600501819055508260a001518160030160016101000a81548160ff0219169083151502179055508260c001518160030160026101000a81548160ff0219169083151502179055508260e0015181600601819055508261010001518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826101200151816008019081610e5891906138e0565b50505b60019050919050565b6000600182604051610e769190613628565b908152602001604051809103902060009054906101000a900460ff1615610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613a6f565b60405180910390fd5b60018083604051610ee39190613628565b908152602001604051809103902060006101000a81548160ff02191690831515021790555060019050919050565b60008054906101000a900460ff1681565b6000610f79868686600360008089898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116af565b905095945050505050565b60036020528060005260406000206000915090505481565b6000811515600060019054906101000a900460ff16151503610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906135cc565b60405180910390fd5b81600060016101000a81548160ff02191690831515021790555060019050919050565b60006110388585856002600087604051806020016040528060008152506116af565b9050949350505050565b600460205281600052604060002081805160208101820180518482526020830160208501208183528095505050505050600091509150505481565b6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b600060019054906101000a900460ff1681565b6002818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b600060018383604051611113929190613ab4565b908152602001604051809103902060009054906101000a900460ff1661116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590613b19565b60405180910390fd5b600060018484604051611182929190613ab4565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001905092915050565b600181565b6060600083116111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290613b85565b60405180910390fd5b6000821161123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590613bf1565b60405180910390fd5b60055483106112a357600067ffffffffffffffff81111561126257611261612b8f565b5b60405190808252806020026020018201604052801561129b57816020015b6112886128ce565b8152602001906001900390816112805790505b5090506115f7565b600060016005546112b49190613700565b600184866112c29190613c11565b6112cc9190613700565b11156112e557836005546112e09190613700565b6112e7565b825b905060008167ffffffffffffffff81111561130557611304612b8f565b5b60405190808252806020026020018201604052801561133e57816020015b61132b6128ce565b8152602001906001900390816113235790505b50905060005b828110156115f05760066000828861135c9190613c11565b815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546113e69061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546114129061354f565b801561145f5780601f106114345761010080835404028352916020019161145f565b820191906000526020600020905b81548152906001019060200180831161144257829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160088201805461153d9061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546115699061354f565b80156115b65780601f1061158b576101008083540402835291602001916115b6565b820191906000526020600020905b81548152906001019060200180831161159957829003601f168201915b5050505050815250508282815181106115d2576115d1613c45565b5b602002602001018190525080806115e8906139b2565b915050611344565b5080925050505b92915050565b600060028383604051611611929190613ab4565b908152602001604051809103902060009054906101000a900460ff1661166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166390613cc0565b60405180910390fd5b600060028484604051611680929190613ab4565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001905092915050565b6000600287876040516116c3929190613ab4565b908152602001604051809103902060009054906101000a900460ff16156116ed576000905061264c565b60016040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516117329190613628565b908152602001604051809103902060009054906101000a900460ff16158015611786575060018787604051611768929190613ab4565b908152602001604051809103902060009054906101000a900460ff16155b15611794576000905061264c565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002089896040516117e7929190613ab4565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615611af257611aeb60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051611870929190613ab4565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546119099061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546119359061354f565b80156119825780601f1061195757610100808354040283529160200191611982565b820191906000526020600020905b81548152906001019060200180831161196557829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611a609061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8c9061354f565b8015611ad95780601f10611aae57610100808354040283529160200191611ad9565b820191906000526020600020905b815481529060010190602001808311611abc57829003601f168201915b50505050508152505086868686612657565b905061264c565b60066000600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051611b789190613628565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff1615611eb657611eaf60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a00000000000000000000000000000000000000000000000000000000000000815250604051611c349190613628565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282018054611ccd9061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611cf99061354f565b8015611d465780601f10611d1b57610100808354040283529160200191611d46565b820191906000526020600020905b815481529060010190602001808311611d2957829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600882018054611e249061354f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e509061354f565b8015611e9d5780601f10611e7257610100808354040283529160200191611e9d565b820191906000526020600020905b815481529060010190602001808311611e8057829003601f168201915b50505050508152505086868686612657565b905061264c565b6000600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f1557600060019054906101000a900460ff16905061264c565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208989604051611f69929190613ab4565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff16156122755761226e6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208a8a604051611ff3929190613ab4565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805461208c9061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546120b89061354f565b80156121055780601f106120da57610100808354040283529160200191612105565b820191906000526020600020905b8154815290600101906020018083116120e857829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016008820180546121e39061354f565b80601f016020809104026020016040519081016040528092919081815260200182805461220f9061354f565b801561225c5780601f106122315761010080835404028352916020019161225c565b820191906000526020600020905b81548152906001019060200180831161223f57829003601f168201915b50505050508152505086868686612657565b905061264c565b6006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516122fc9190613628565b908152602001604051809103902054815260200190815260200160002060030160009054906101000a900460ff161561263b576126346006600060046000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a000000000000000000000000000000000000000000000000000000000000008152506040516123b99190613628565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820180546124529061354f565b80601f016020809104026020016040519081016040528092919081815260200182805461247e9061354f565b80156124cb5780601f106124a0576101008083540402835291602001916124cb565b820191906000526020600020905b8154815290600101906020018083116124ae57829003601f168201915b505050505081526020016003820160009054906101000a900460ff161515151581526020016003820160019054906101000a900460ff161515151581526020016003820160029054906101000a900460ff161515151581526020016004820154815260200160058201548152602001600682015481526020016007820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016008820180546125a99061354f565b80601f01602080910402602001604051908101604052809291908181526020018280546125d59061354f565b80156126225780601f106125f757610100808354040283529160200191612622565b820191906000526020600020905b81548152906001019060200180831161260557829003601f168201915b50505050508152505086868686612657565b905061264c565b60008054906101000a900460ff1690505b979650505050505050565b600085608001511561266c57600090506128c5565b8560a001511561267f57600190506128c5565b60008660c001511180156126965750428660c00151105b156126a457600090506128c5565b60008660e001511180156126bb5750428660e00151115b156126c957600090506128c5565b600160038111156126dd576126dc613ce0565b5b8560038111156126f0576126ef613ce0565b5b1480156127035750600086610100015114155b801561271457508386610100015114155b1561272257600090506128c5565b6002600381111561273657612735613ce0565b5b85600381111561274957612748613ce0565b5b1480156127885750600073ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b80156127c557508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b156127d357600090506128c5565b6003808111156127e6576127e5613ce0565b5b8560038111156127f9576127f8613ce0565b5b148015612855575060405160200161281090613d35565b6040516020818303038152906040528051906020012086610140015160405160200161283c9190613628565b6040516020818303038152906040528051906020012014155b80156128b257508160405160200161286d9190613628565b604051602081830303815290604052805190602001208661014001516040516020016128999190613628565b6040516020818303038152906040528051906020012014155b156128c057600090506128c5565b600190505b95945050505050565b60405180610160016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600015158152602001600015158152602001600015158152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6129818161296e565b811461298c57600080fd5b50565b60008135905061299e81612978565b92915050565b6000602082840312156129ba576129b9612964565b5b60006129c88482850161298f565b91505092915050565b6129da8161296e565b82525050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a0b826129e0565b9050919050565b612a1b81612a00565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a5b578082015181840152602081019050612a40565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a8382612a21565b612a8d8185612a2c565b9350612a9d818560208601612a3d565b612aa681612a67565b840191505092915050565b60008115159050919050565b612ac681612ab1565b82525050565b600061016082019050612ae2600083018e6129d1565b612aef602083018d612a12565b8181036040830152612b01818c612a78565b9050612b10606083018b612abd565b612b1d608083018a612abd565b612b2a60a0830189612abd565b612b3760c08301886129d1565b612b4460e08301876129d1565b612b526101008301866129d1565b612b60610120830185612a12565b818103610140830152612b738184612a78565b90509c9b505050505050505050505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612a67565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf961295a565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b612c2e82612a67565b9050602081019050919050565b82818337600083830152505050565b6000612c5d612c5884612c0a565b612bef565b905082815260208101848484011115612c7957612c78612b8a565b5b612c84848285612c3b565b509392505050565b600082601f830112612ca157612ca0612b85565b5b8135612cb1848260208601612c4a565b91505092915050565b600060208284031215612cd057612ccf612964565b5b600082013567ffffffffffffffff811115612cee57612ced612969565b5b612cfa84828501612c8c565b91505092915050565b6000602082019050612d186000830184612abd565b92915050565b612d2781612a00565b8114612d3257600080fd5b50565b600081359050612d4481612d1e565b92915050565b600080fd5b600080fd5b60008083601f840112612d6a57612d69612b85565b5b8235905067ffffffffffffffff811115612d8757612d86612d4a565b5b602083019150836001820283011115612da357612da2612d4f565b5b9250929050565b60008060008060608587031215612dc457612dc3612964565b5b6000612dd287828801612d35565b945050602085013567ffffffffffffffff811115612df357612df2612969565b5b612dff87828801612d54565b93509350506040612e128782880161298f565b91505092959194509250565b612e2781612ab1565b8114612e3257600080fd5b50565b600081359050612e4481612e1e565b92915050565b600060208284031215612e6057612e5f612964565b5b6000612e6e84828501612e35565b91505092915050565b6000602082019050612e8c60008301846129d1565b92915050565b600080600060408486031215612eab57612eaa612964565b5b6000612eb986828701612d35565b935050602084013567ffffffffffffffff811115612eda57612ed9612969565b5b612ee686828701612d54565b92509250509250925092565b600080fd5b600080fd5b60006101408284031215612f1357612f12612ef2565b5b612f1e610140612bef565b90506000612f2e84828501612d35565b600083015250602082013567ffffffffffffffff811115612f5257612f51612ef7565b5b612f5e84828501612c8c565b6020830152506040612f7284828501612e35565b6040830152506060612f868482850161298f565b6060830152506080612f9a8482850161298f565b60808301525060a0612fae84828501612e35565b60a08301525060c0612fc284828501612e35565b60c08301525060e0612fd68482850161298f565b60e083015250610100612feb84828501612d35565b6101008301525061012082013567ffffffffffffffff81111561301157613010612ef7565b5b61301d84828501612c8c565b6101208301525092915050565b6000602082840312156130405761303f612964565b5b600082013567ffffffffffffffff81111561305e5761305d612969565b5b61306a84828501612efc565b91505092915050565b60008060008060006060868803121561308f5761308e612964565b5b600061309d88828901612d35565b955050602086013567ffffffffffffffff8111156130be576130bd612969565b5b6130ca88828901612d54565b9450945050604086013567ffffffffffffffff8111156130ed576130ec612969565b5b6130f988828901612d54565b92509250509295509295909350565b60006020828403121561311e5761311d612964565b5b600061312c84828501612d35565b91505092915050565b6000806000806060858703121561314f5761314e612964565b5b600061315d87828801612d35565b945050602085013567ffffffffffffffff81111561317e5761317d612969565b5b61318a87828801612d54565b9350935050604061319d87828801612d35565b91505092959194509250565b600080604083850312156131c0576131bf612964565b5b60006131ce85828601612d35565b925050602083013567ffffffffffffffff8111156131ef576131ee612969565b5b6131fb85828601612c8c565b9150509250929050565b6000602082019050818103600083015261321f8184612a78565b905092915050565b6000806020838503121561323e5761323d612964565b5b600083013567ffffffffffffffff81111561325c5761325b612969565b5b61326885828601612d54565b92509250509250929050565b60006020820190506132896000830184612a12565b92915050565b600080604083850312156132a6576132a5612964565b5b60006132b48582860161298f565b92505060206132c58582860161298f565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133048161296e565b82525050565b61331381612a00565b82525050565b600082825260208201905092915050565b600061333582612a21565b61333f8185613319565b935061334f818560208601612a3d565b61335881612a67565b840191505092915050565b61336c81612ab1565b82525050565b60006101608301600083015161338b60008601826132fb565b50602083015161339e602086018261330a565b50604083015184820360408601526133b6828261332a565b91505060608301516133cb6060860182613363565b5060808301516133de6080860182613363565b5060a08301516133f160a0860182613363565b5060c083015161340460c08601826132fb565b5060e083015161341760e08601826132fb565b5061010083015161342c6101008601826132fb565b5061012083015161344161012086018261330a565b5061014083015184820361014086015261345b828261332a565b9150508091505092915050565b60006134748383613372565b905092915050565b6000602082019050919050565b6000613494826132cf565b61349e81856132da565b9350836020820285016134b0856132eb565b8060005b858110156134ec57848403895281516134cd8582613468565b94506134d88361347c565b925060208a019950506001810190506134b4565b50829750879550505050505092915050565b600060208201905081810360008301526135188184613489565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061356757607f821691505b60208210810361357a57613579613520565b5b50919050565b7f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e47450000600082015250565b60006135b6601e83612a2c565b91506135c182613580565b602082019050919050565b600060208201905081810360008301526135e5816135a9565b9050919050565b600081905092915050565b600061360282612a21565b61360c81856135ec565b935061361c818560208601612a3d565b80840191505092915050565b600061363482846135f7565b915081905092915050565b7f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560008201527f4400000000000000000000000000000000000000000000000000000000000000602082015250565b600061369b602183612a2c565b91506136a68261363f565b604082019050919050565b600060208201905081810360008301526136ca8161368e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061370b8261296e565b91506137168361296e565b925082820390508181111561372e5761372d6136d1565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613759565b6137a08683613759565b95508019841693508086168417925050509392505050565b6000819050919050565b60006137dd6137d86137d38461296e565b6137b8565b61296e565b9050919050565b6000819050919050565b6137f7836137c2565b61380b613803826137e4565b848454613766565b825550505050565b600090565b613820613813565b61382b8184846137ee565b505050565b5b8181101561384f57613844600082613818565b600181019050613831565b5050565b601f8211156138945761386581613734565b61386e84613749565b8101602085101561387d578190505b61389161388985613749565b830182613830565b50505b505050565b600082821c905092915050565b60006138b760001984600802613899565b1980831691505092915050565b60006138d083836138a6565b9150826002028217905092915050565b6138e982612a21565b67ffffffffffffffff81111561390257613901612b8f565b5b61390c825461354f565b613917828285613853565b600060209050601f83116001811461394a5760008415613938578287015190505b61394285826138c4565b8655506139aa565b601f19841661395886613734565b60005b828110156139805784890151825560018201915060208501945060208101905061395b565b8683101561399d5784890151613999601f8916826138a6565b8355505b6001600288020188555050505b505050505050565b60006139bd8261296e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139ef576139ee6136d1565b5b600182019050919050565b6000613a058261296e565b915060008203613a1857613a176136d1565b5b600182039050919050565b7f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f5745440000600082015250565b6000613a59601e83612a2c565b9150613a6482613a23565b602082019050919050565b60006020820190508181036000830152613a8881613a4c565b9050919050565b6000613a9b83856135ec565b9350613aa8838584612c3b565b82840190509392505050565b6000613ac1828486613a8f565b91508190509392505050565b7f4450463a204f5045524154494f4e5f4e4f545f414c4c4f574544000000000000600082015250565b6000613b03601a83612a2c565b9150613b0e82613acd565b602082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4450463a2053544152545f4944585f5a45524f00000000000000000000000000600082015250565b6000613b6f601383612a2c565b9150613b7a82613b39565b602082019050919050565b60006020820190508181036000830152613b9e81613b62565b9050919050565b7f4450463a204348554e4b5f53495a455f5a45524f000000000000000000000000600082015250565b6000613bdb601483612a2c565b9150613be682613ba5565b602082019050919050565b60006020820190508181036000830152613c0a81613bce565b9050919050565b6000613c1c8261296e565b9150613c278361296e565b9250828201905080821115613c3f57613c3e6136d1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4450463a204f5045524154494f4e5f4e4f545f52455354524943544544000000600082015250565b6000613caa601d83612a2c565b9150613cb582613c74565b602082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b50565b6000613d1f6000836135ec565b9150613d2a82613d0f565b600082019050919050565b6000613d4082613d12565b915081905091905056fea264697066735822122088896a5875ca8d6c8a56e396e534b4ef81d54a5ac82873d608028cc7de4f140764736f6c63430008140033";
618
+ "0x608060405260016005553480156200001657600080fd5b506000805461ffff19166101011790556040516430b236b4b760d91b81526001908190819081906005019081526040805160209281900383018120805460ff1916941515949094179093556101408301815233835280518082018252600581526430b236b4b760d91b81840152828401526001838201526000606084018190526080840181905260a0840181905260c0840181905260e08401819052610100840181905281519283019091528152610120820152620000d59062000196565b506040805180820182526001808252601560f91b602083015291518291620000fd9162000592565b9081526040805160209281900383018120805460ff19169415159490941790935561014083018152600180845281518083018352818152601560f91b8185015283850152838201526000606084018190526080840181905260a0840181905260c0840181905260e084018190526101008401819052815192830190915281526101208201526200018d9062000196565b50505062000780565b80516001600160a01b03166000908152600460209081526040808320918401519051620001c4919062000592565b908152602001604051809103902054600003620003ff5760055482516001600160a01b031660009081526004602090815260409182902090850151915190916200020e9162000592565b908152602001604051809103902081905550604051806101600160405280600554815260200183600001516001600160a01b03168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e0015181526020018361010001516001600160a01b031681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550604082015181600201908162000313919062000668565b506060820151600382018054608085015160a086015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180546001600160a01b0319166001600160a01b039092169190911790556101408201516008820190620003b3908262000668565b50905050600560008154620003c8906200074a565b9091555081516001600160a01b031660009081526003602052604081208054909190620003f5906200074a565b909155506200058a565b81516001600160a01b031660009081526004602090815260408083209185015190516006928492909162000434919062000592565b90815260200160405180910390205481526020019081526020016000209050826040015180156200046a5750600381015460ff16155b156200049e5782516001600160a01b03166000908152600360205260408120805490919062000499906200074a565b909155505b8260400151158015620004b55750600381015460ff165b15620004e95782516001600160a01b031660009081526003602052604081208054909190620004e49062000766565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c087015161ffff1990921693151561ff0019169390931761010093151584021762ff00001916620100009115159190910217905560e084015160068301558301516007820180546001600160a01b0319166001600160a01b03909216919091179055610120830151600882019062000587908262000668565b50505b506001919050565b6000825160005b81811015620005b5576020818601810151858301520162000599565b506000920191825250919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005ee57607f821691505b6020821081036200060f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066357600081815260208120601f850160051c810160208610156200063e5750805b601f850160051c820191505b818110156200065f578281556001016200064a565b5050505b505050565b81516001600160401b03811115620006845762000684620005c3565b6200069c81620006958454620005d9565b8462000615565b602080601f831160018114620006d45760008415620006bb5750858301515b600019600386901b1c1916600185901b1785556200065f565b600085815260208120601f198616915b828110156200070557888601518255948401946001909101908401620006e4565b5085821015620007245787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6000600182016200075f576200075f62000734565b5060010190565b60008162000778576200077862000734565b506000190190565b6128d380620007906000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c8063a7804d65116100d8578063f28b9f341161008c578063fa1b3cac11610066578063fa1b3cac146103be578063fac66f01146103eb578063fb83bb731461040b57600080fd5b8063f28b9f341461036b578063f55893641461037d578063f9529ee2146103ab57600080fd5b8063c6064b28116100bd578063c6064b28146102d3578063c8d757fd146102e6578063efdcec9c1461032257600080fd5b8063a7804d65146102a0578063ade0bee4146102c057600080fd5b8063661957011161013a5780639359c287116101145780639359c2871461026d578063a5fcf16214610280578063a74d34391461028d57600080fd5b80636619570114610231578063699d7c331461024757806382dab96e1461025a57600080fd5b8063372db0891161016b578063372db089146101f8578063476a95ad1461020b57806365c581521461021e57600080fd5b806326c500071461018757806334906a4a146101ba575b600080fd5b61019a610195366004611dda565b61041e565b6040516101b19b9a99989796959493929190611e61565b60405180910390f35b6101e86101c8366004611ff8565b805160208183018101805160018252928201919093012091525460ff1681565b60405190151581526020016101b1565b6101e861020636600461209f565b6105bb565b6101e8610219366004612109565b6105e6565b6101e861022c366004611ff8565b610695565b61023961079f565b6040519081526020016101b1565b6101e861025536600461212b565b6107b5565b6101e861026836600461217e565b6107df565b6101e861027b366004611ff8565b610d39565b6000546101e89060ff1681565b6101e861029b366004612288565b610dd6565b6102396102ae366004612309565b60036020526000908152604090205481565b6101e86102ce366004612109565b610e29565b6101e86102e1366004612324565b610ee2565b6102396102f4366004612389565b6004602090815260009283526040909220815180830184018051928152908401929093019190912091525481565b61035e6040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525081565b6040516101b191906123d7565b6000546101e890610100900460ff1681565b6101e861038b366004611ff8565b805160208183018101805160028252928201919093012091525460ff1681565b6101e86103b93660046123ea565b610f04565b6103c6600181565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6103fe6103f936600461242c565b610fed565b6040516101b1919061244e565b6101e86104193660046123ea565b61146d565b600660205260009081526040902080546001820154600283018054929373ffffffffffffffffffffffffffffffffffffffff9092169261045d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461048990612595565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505060038301546004840154600585015460068601546007870154600888018054979860ff8088169961010089048216995062010000909804169673ffffffffffffffffffffffffffffffffffffffff9093169290919061053890612595565b80601f016020809104026020016040519081016040528092919081815260200182805461056490612595565b80156105b15780601f10610586576101008083540402835291602001916105b1565b820191906000526020600020905b81548152906001019060200180831161059457829003601f168201915b505050505090508b565b60006105dd85858560018660006040518060200160405280600081525061150e565b95945050505050565b6000805482151560ff909116151503610660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e4745000060448201526064015b60405180910390fd5b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600190565b60006002826040516106a791906125e8565b9081526040519081900360200190205460ff1615610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4450463a204f5045524154494f4e5f414c52454144595f52455354524943544560448201527f44000000000000000000000000000000000000000000000000000000000000006064820152608401610657565b600160028360405161075991906125e8565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055506001919050565b600060016005546107b09190612633565b905090565b60006107d784848460008060006040518060200160405280600081525061150e565b949350505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091840151905161081891906125e8565b908152602001604051809103902054600003610b1057600554825173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604091829020908501519151909161086c916125e8565b9081526020016040518091039020819055506040518061016001604052806005548152602001836000015173ffffffffffffffffffffffffffffffffffffffff168152602001836020015181526020018360400151151581526020018360a00151151581526020018360c001511515815260200183606001518152602001836080015181526020018360e00151815260200183610100015173ffffffffffffffffffffffffffffffffffffffff1681526020018361012001518152506006600060055481526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190816109a39190612695565b506060820151600382018054608085015160a08601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560c0830151600483015560e0830151600583015582015160068201556101208201516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101408201516008820190610abc9082612695565b50905050600560008154610acf906127af565b90915550815173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610b07906127af565b90915550610d31565b815173ffffffffffffffffffffffffffffffffffffffff16600090815260046020908152604080832091850151905160069284929091610b5091906125e8565b9081526020016040518091039020548152602001908152602001600020905082604001518015610b855750600381015460ff16155b15610bc357825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610bbe906127af565b909155505b8260400151158015610bd95750600381015460ff165b15610c1757825173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604081208054909190610c12906127e7565b909155505b6040830151600382018054606086015160048501556080860151600585015560a086015160c08701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16939093176101009315158402177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16620100009115159190910217905560e084015160068301558301516007820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556101208301516008820190610d2e9082612695565b50505b506001919050565b6000600182604051610d4b91906125e8565b9081526040519081900360200190205460ff1615610dc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a204f5045524154494f4e5f414c52454144595f414c4c4f57454400006044820152606401610657565b6001808360405161075991906125e8565b6000610e1f868686600360008089898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150e92505050565b9695505050505050565b6000811515600060019054906101000a900460ff16151503610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4450463a20494e56414c49445f5045524d495353494f4e5f4348414e474500006044820152606401610657565b5060008054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055600190565b60006105dd85858560026000876040518060200160405280600081525061150e565b600060018383604051610f1892919061281c565b9081526040519081900360200190205460ff16610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4450463a204f5045524154494f4e5f4e4f545f414c4c4f5745440000000000006044820152606401610657565b600060018484604051610fa592919061281c565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009092169190911790555060015b92915050565b606060008311611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4450463a2053544152545f4944585f5a45524f000000000000000000000000006044820152606401610657565b600082116110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4450463a204348554e4b5f53495a455f5a45524f0000000000000000000000006044820152606401610657565b600554831061115557604080516000808252602082019092529061114d565b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816110e25790505b509050610fe7565b600060016005546111669190612633565b6001611172858761282c565b61117c9190612633565b111561119557836005546111909190612633565b611197565b825b905060008167ffffffffffffffff8111156111b4576111b4611ef4565b60405190808252806020026020018201604052801561123d57816020015b604080516101608101825260008082526020820181905260609282018390528282018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526101408101919091528152602001906001900390816111d25790505b50905060005b828110156114645760066000611259838961282c565b8152602080820192909252604090810160002081516101608101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff169381019390935260028101805491928401916112af90612595565b80601f01602080910402602001604051908101604052809291908181526020018280546112db90612595565b80156113285780601f106112fd57610100808354040283529160200191611328565b820191906000526020600020905b81548152906001019060200180831161130b57829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e08301526008830180549190920191906113b290612595565b80601f01602080910402602001604051908101604052809291908181526020018280546113de90612595565b801561142b5780601f106114005761010080835404028352916020019161142b565b820191906000526020600020905b81548152906001019060200180831161140e57829003601f168201915b5050505050815250508282815181106114465761144661283f565b6020026020010181905250808061145c906127af565b915050611243565b50949350505050565b60006002838360405161148192919061281c565b9081526040519081900360200190205460ff166114fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4450463a204f5045524154494f4e5f4e4f545f524553545249435445440000006044820152606401610657565b600060028484604051610fa592919061281c565b60006002878760405161152292919061281c565b9081526040519081900360200190205460ff161561154257506000611bc9565b60408051808201825260018082527f2a000000000000000000000000000000000000000000000000000000000000006020830152915161158291906125e8565b9081526040519081900360200190205460ff161580156115c45750600187876040516115af92919061281c565b9081526040519081900360200190205460ff16155b156115d157506000611bc9565b73ffffffffffffffffffffffffffffffffffffffff88166000908152600460205260408082209051600692919061160b908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156118a25773ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040808220905161189b926006929091611674908c908c9061281c565b908152602001604051809103902054815260200190815260200160002060405180610160016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201805461170d90612595565b80601f016020809104026020016040519081016040528092919081815260200182805461173990612595565b80156117865780601f1061175b57610100808354040283529160200191611786565b820191906000526020600020905b81548152906001019060200180831161176957829003601f168201915b5050509183525050600382015460ff8082161515602084015261010080830482161515604085015262010000909204161515606083015260048301546080830152600583015460a0830152600683015460c0830152600783015473ffffffffffffffffffffffffffffffffffffffff1660e083015260088301805491909201919061181090612595565b80601f016020809104026020016040519081016040528092919081815260200182805461183c90612595565b80156118895780601f1061185e57610100808354040283529160200191611889565b820191906000526020600020905b81548152906001019060200180831161186c57829003601f168201915b50505050508152505086868686611bd4565b9050611bc9565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260046020908152604080832081518083018352600181527f2a000000000000000000000000000000000000000000000000000000000000009381019390935290516006939261190c916125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff16156119c05761189b60066000600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405280600181526020017f2a0000000000000000000000000000000000000000000000000000000000000081525060405161167491906125e8565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260036020526040902054156119fc5750600054610100900460ff16611bc9565b600160009081526004602052604051600691907fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611a3e908b908b9061281c565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611aae5760016000908152600460205260405161189b916006917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0590611674908c908c9061281c565b60016000818152600460209081526040805180820182529384527f2a0000000000000000000000000000000000000000000000000000000000000091840191909152516006927fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611b2091906125e8565b908152604080516020928190038301902054835290820192909252016000206003015460ff1615611bc15760016000818152600460209081526040805180820182529384527f2a00000000000000000000000000000000000000000000000000000000000000918401919091525161189b92600692917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0591611674916125e8565b5060005460ff165b979650505050505050565b6000856080015115611be8575060006105dd565b8560a0015115611bfa575060016105dd565b60008660c00151118015611c115750428660c00151105b15611c1e575060006105dd565b60008660e00151118015611c355750428660e00151115b15611c42575060006105dd565b6001856003811115611c5657611c5661286e565b148015611c67575061010086015115155b8015611c7857508386610100015114155b15611c85575060006105dd565b6002856003811115611c9957611c9961286e565b148015611cc0575061012086015173ffffffffffffffffffffffffffffffffffffffff1615155b8015611cfd57508273ffffffffffffffffffffffffffffffffffffffff1686610120015173ffffffffffffffffffffffffffffffffffffffff1614155b15611d0a575060006105dd565b6003856003811115611d1e57611d1e61286e565b148015611d645750604080516000815260208101808352815190206101408901519092611d4b92016125e8565b6040516020818303038152906040528051906020012014155b8015611dc1575081604051602001611d7c91906125e8565b60405160208183030381529060405280519060200120866101400151604051602001611da891906125e8565b6040516020818303038152906040528051906020012014155b15611dce575060006105dd565b50600195945050505050565b600060208284031215611dec57600080fd5b5035919050565b60005b83811015611e0e578181015183820152602001611df6565b50506000910152565b60008151808452611e2f816020860160208601611df3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006101608d835273ffffffffffffffffffffffffffffffffffffffff808e166020850152816040850152611e988285018e611e17565b91508b151560608501528a1515608085015289151560a08501528860c08501528760e08501528661010085015280861661012085015250828103610140840152611ee28185611e17565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715611f4757611f47611ef4565b60405290565b600082601f830112611f5e57600080fd5b813567ffffffffffffffff80821115611f7957611f79611ef4565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611fbf57611fbf611ef4565b81604052838152866020858801011115611fd857600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561200a57600080fd5b813567ffffffffffffffff81111561202157600080fd5b6107d784828501611f4d565b803573ffffffffffffffffffffffffffffffffffffffff8116811461205157600080fd5b919050565b60008083601f84011261206857600080fd5b50813567ffffffffffffffff81111561208057600080fd5b60208301915083602082850101111561209857600080fd5b9250929050565b600080600080606085870312156120b557600080fd5b6120be8561202d565b9350602085013567ffffffffffffffff8111156120da57600080fd5b6120e687828801612056565b9598909750949560400135949350505050565b8035801515811461205157600080fd5b60006020828403121561211b57600080fd5b612124826120f9565b9392505050565b60008060006040848603121561214057600080fd5b6121498461202d565b9250602084013567ffffffffffffffff81111561216557600080fd5b61217186828701612056565b9497909650939450505050565b60006020828403121561219057600080fd5b813567ffffffffffffffff808211156121a857600080fd5b9083019061014082860312156121bd57600080fd5b6121c5611f23565b6121ce8361202d565b81526020830135828111156121e257600080fd5b6121ee87828601611f4d565b602083015250612200604084016120f9565b6040820152606083013560608201526080830135608082015261222560a084016120f9565b60a082015261223660c084016120f9565b60c082015260e083013560e082015261010061225381850161202d565b90820152610120838101358381111561226b57600080fd5b61227788828701611f4d565b918301919091525095945050505050565b6000806000806000606086880312156122a057600080fd5b6122a98661202d565b9450602086013567ffffffffffffffff808211156122c657600080fd5b6122d289838a01612056565b909650945060408801359150808211156122eb57600080fd5b506122f888828901612056565b969995985093965092949392505050565b60006020828403121561231b57600080fd5b6121248261202d565b6000806000806060858703121561233a57600080fd5b6123438561202d565b9350602085013567ffffffffffffffff81111561235f57600080fd5b61236b87828801612056565b909450925061237e90506040860161202d565b905092959194509250565b6000806040838503121561239c57600080fd5b6123a58361202d565b9150602083013567ffffffffffffffff8111156123c157600080fd5b6123cd85828601611f4d565b9150509250929050565b6020815260006121246020830184611e17565b600080602083850312156123fd57600080fd5b823567ffffffffffffffff81111561241457600080fd5b61242085828601612056565b90969095509350505050565b6000806040838503121561243f57600080fd5b50508035926020909101359150565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015612587577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0898403018552815161016081518552888201516124d28a87018273ffffffffffffffffffffffffffffffffffffffff169052565b508782015181898701526124e882870182611e17565b9150506060808301516124fe8288018215159052565b505060808281015115159086015260a08083015115159086015260c0808301519086015260e0808301519086015261010080830151908601526101208083015173ffffffffffffffffffffffffffffffffffffffff169086015261014091820151858203928601929092526125738183611e17565b968901969450505090860190600101612475565b509098975050505050505050565b600181811c908216806125a957607f821691505b6020821081036125e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600082516125fa818460208701611df3565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610fe757610fe7612604565b601f82111561269057600081815260208120601f850160051c8101602086101561266d5750805b601f850160051c820191505b8181101561268c57828155600101612679565b5050505b505050565b815167ffffffffffffffff8111156126af576126af611ef4565b6126c3816126bd8454612595565b84612646565b602080601f83116001811461271657600084156126e05750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561268c565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561276357888601518255948401946001909101908401612744565b508582101561279f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127e0576127e0612604565b5060010190565b6000816127f6576127f6612604565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8183823760009101908152919050565b80820180821115610fe757610fe7612604565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220b842a18ce27b383c47a40b66776265cbbdf4e1dc6286556aafcf1c0ce64e7aed64736f6c63430008130033";
619
619
 
620
620
  type DataPrivacyFrameworkMockConstructorParams =
621
621
  | [signer?: Signer]
@@ -566,7 +566,7 @@ const _abi = [
566
566
  ] as const;
567
567
 
568
568
  const _bytecode =
569
- "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020017f5072697661746545524332304d6f636b000000000000000000000000000000008152506040518060400160405280600581526020017f504532304d00000000000000000000000000000000000000000000000000000081525081600490816200008f919062000324565b508060059081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ab7806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063313ce567116100ad57806396b2db381161007157806396b2db3814610344578063a42c0af914610374578063a7d9ad6a146103a4578063a9059cbb146103d4578063dd62ed3e1461040457610121565b8063313ce5671461028a57806370a08231146102a8578063722713f7146102d85780638269bcc3146102f657806395d89b411461032657610121565b806313691c76116100f457806313691c76146101d457806318160ddd146101f057806323b872dd1461020e57806326a9b3f11461023e5780632893c5b01461026e57610121565b8063043d20851461012657806306fdde031461015657806308a2032a14610174578063095ea7b3146101a4575b600080fd5b610140600480360381019061013b9190611f08565b610434565b60405161014d9190611f44565b60405180910390f35b61015e61049c565b60405161016b9190611fef565b60405180910390f35b61018e60048036038101906101899190612035565b61052e565b60405161019b91906120e9565b60405180910390f35b6101be60048036038101906101b99190612130565b610572565b6040516101cb919061218b565b60405180910390f35b6101ee60048036038101906101e991906121e6565b610595565b005b6101f86105ac565b6040516102059190612235565b60405180910390f35b61022860048036038101906102239190612250565b6105b1565b60405161023591906120e9565b60405180910390f35b610258600480360381019061025391906122cf565b6105de565b604051610265919061218b565b60405180910390f35b610288600480360381019061028391906121e6565b610756565b005b61029261076d565b60405161029f919061232b565b60405180910390f35b6102c260048036038101906102bd9190611f08565b610776565b6040516102cf9190612355565b60405180910390f35b6102e06107c2565b6040516102ed919061237f565b60405180910390f35b610310600480360381019061030b9190611f08565b6107d9565b60405161031d919061218b565b60405180910390f35b61032e6108d3565b60405161033b9190611fef565b60405180910390f35b61035e600480360381019061035991906122cf565b610965565b60405161036b919061237f565b60405180910390f35b61038e6004803603810190610389919061239a565b610a9b565b60405161039b919061218b565b60405180910390f35b6103be60048036038101906103b9919061239a565b610ad5565b6040516103cb91906120e9565b60405180910390f35b6103ee60048036038101906103e99190612130565b610b0d565b6040516103fb91906120e9565b60405180910390f35b61041e600480360381019061041991906123f6565b610b2e565b60405161042b9190612487565b60405180910390f35b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600480546104ab906124d1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d7906124d1565b80156105245780601f106104f957610100808354040283529160200191610524565b820191906000526020600020905b81548152906001019060200180831161050757829003601f168201915b5050505050905090565b600080610539610be3565b9050600061054f8461054a906126d9565b610beb565b905061055c868383610c92565b610567868683610de7565b925050509392505050565b60008061057d610be3565b905061058a818585610ee0565b600191505092915050565b6105a7826105a28361112d565b6111d4565b505050565b600090565b6000806105bc610be3565b90506105c9858285610c92565b6105d4858585610de7565b9150509392505050565b6000806105f16105ec610be3565b61125b565b905082156106a457600060026000610607610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506106966106908260000154611300565b8361132b565b81600101819055505061074b565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106ef610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061074161073b8260000154611300565b8361132b565b8160020181905550505b600191505092915050565b610768826107638361112d565b6113ea565b505050565b60006002905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b60006107d46107cf610be3565b611471565b905090565b6000806107ec6107e7610be3565b611471565b9050826000806107fa610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061087c818461132b565b60016000610888610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506001915050919050565b6060600580546108e2906124d1565b80601f016020809104026020016040519081016040528092919081815260200182805461090e906124d1565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b60008115610a03576109fc6002600061097c610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b9050610a95565b610a92600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a4f610be3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90505b92915050565b600080610aa6610be3565b90506000610abc84610ab7906126d9565b610beb565b9050610ac9828683610ee0565b60019250505092915050565b600080610ae0610be3565b90506000610af684610af1906126d9565b610beb565b9050610b03828683610de7565b9250505092915050565b600080610b18610be3565b9050610b25818585610de7565b91505092915050565b610b36611e5b565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050905092915050565b600033905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e10600480811115610c1d57610c1c6126ec565b5b60f81b846000015185602001516040518463ffffffff1660e01b8152600401610c48939291906127ab565b6020604051808303816000875af1158015610c67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8b9190612815565b9050919050565b6000610cdf600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d6b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611300565b90506000610d8982610d8467ffffffffffffffff61112d565b6114ca565b90506000610d978486611561565b90506000610da58487611561565b90506000610dcf610dbf85610dba86866115f8565b6115f8565b610dc9878a61168f565b87611726565b9050610ddc898983610ee0565b505050505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610e5a5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610e519190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ecc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ec39190611f44565b60405180910390fd5b610ed78484846117c0565b90509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f525760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f499190611f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc45760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fbb9190611f44565b60405180910390fd5b6000610fcf82611996565b90506000610fdc8561125b565b90506000610fea848361132b565b9050610ff58561125b565b91506000611003858461132b565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7848460405161111c929190612842565b60405180910390a350505050505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060048081111561115f5761115e6126ec565b5b60f81b8467ffffffffffffffff166040518363ffffffff1660e01b815260040161118a92919061286b565b6020604051808303816000875af11580156111a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cd9190612815565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112475760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161123e9190611f44565b60405180910390fd5b611253836000846117c0565b905092915050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f7578290505b80915050919050565b600080820361131a57611313600061112d565b9050611326565b61132382611a33565b90505b919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e6860048081111561135d5761135c6126ec565b5b60f81b858560405160200161137291906128dc565b6040516020818303038152906040526040518463ffffffff1660e01b815260040161139f939291906127ab565b6020604051808303816000875af11580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e29190612815565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361145d5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114549190611f44565b60405180910390fd5b611469600084846117c0565b905092915050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506114c281611300565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16637c12a1eb6114f66004806000611ad0565b85856040518463ffffffff1660e01b815260040161151693929190612932565b6020604051808303816000875af1158015611535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115599190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663dd14869361158d6004806000611ad0565b85856040518463ffffffff1660e01b81526004016115ad93929190612932565b6020604051808303816000875af11580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663fb7da35f6116246000806000611ad0565b85856040518463ffffffff1660e01b815260040161164493929190612932565b6020604051808303816000875af1158015611663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116879190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663371d1bf26116bb6004806000611ad0565b85856040518463ffffffff1660e01b81526004016116db93929190612932565b6020604051808303816000875af11580156116fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171e9190612815565b905092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff166320cc408d6117526004806000611ad0565b8686866040518563ffffffff1660e01b81526004016117749493929190612969565b6020604051808303816000875af1158015611793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b79190612815565b90509392505050565b600080600083905060006117d46001611b31565b9050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611854576000611817600354611300565b90506118238187611be5565b905061182e81611996565b600381905550600061183f88611471565b905061184b8188611be5565b945050506118a1565b600061185f88611471565b9050600061186c88611471565b9050600061187b83838a611c7c565b8096508198508293505050506118918a82611d31565b61189b868361168f565b94505050505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036119055760006118e2600354611300565b90506118ee818461168f565b90506118f981611996565b60038190555050611910565b61190f8684611d31565b5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611969858b61132b565b611973868b61132b565b604051611981929190612842565b60405180910390a38093505050509392505050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c026004808111156119c8576119c76126ec565b5b60f81b846040518363ffffffff1660e01b81526004016119e992919061286b565b6020604051808303816000875af1158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190612815565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e5600480811115611a6557611a646126ec565b5b60f81b846040518363ffffffff1660e01b8152600401611a8692919061286b565b6020604051808303816000875af1158015611aa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac99190612815565b9050919050565b6000816002811115611ae557611ae46126ec565b5b60ff166008846004811115611afd57611afc6126ec565b5b61ffff16901b61ffff166010866004811115611b1c57611b1b6126ec565b5b62ffffff16901b171760e81b90509392505050565b60008082611b40576000611b43565b60015b60ff169050606473ffffffffffffffffffffffffffffffffffffffff1663d9b60b6060006004811115611b7957611b786126ec565b5b60f81b836040518363ffffffff1660e01b8152600401611b9a92919061286b565b6020604051808303816000875af1158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612815565b915050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16638c5d0150611c116004806000611ad0565b85856040518463ffffffff1660e01b8152600401611c3193929190612932565b6020604051808303816000875af1158015611c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c749190612815565b905092915050565b600080600080600080606473ffffffffffffffffffffffffffffffffffffffff166356c72d28611cb160048060046000611da3565b8b8b8b6040518563ffffffff1660e01b8152600401611cd394939291906129e9565b6060604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190612a2e565b92509250925082828295509550955050505093509350939050565b6000611d3c8361125b565b9050611d488282611e28565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155905050505050565b6000816002811115611db857611db76126ec565b5b60ff166008846004811115611dd057611dcf6126ec565b5b61ffff16901b61ffff166010866004811115611def57611dee6126ec565b5b62ffffff16901b62ffffff166018886004811115611e1057611e0f6126ec565b5b63ffffffff16901b17171760e01b9050949350505050565b611e30611e7c565b611e3983611996565b816000018181525050611e4c838361132b565b81602001818152505092915050565b60405180606001604052806000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ed582611eaa565b9050919050565b611ee581611eca565b8114611ef057600080fd5b50565b600081359050611f0281611edc565b92915050565b600060208284031215611f1e57611f1d611ea0565b5b6000611f2c84828501611ef3565b91505092915050565b611f3e81611eca565b82525050565b6000602082019050611f596000830184611f35565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f99578082015181840152602081019050611f7e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fc182611f5f565b611fcb8185611f6a565b9350611fdb818560208601611f7b565b611fe481611fa5565b840191505092915050565b600060208201905081810360008301526120098184611fb6565b905092915050565b600080fd5b60006040828403121561202c5761202b612011565b5b81905092915050565b60008060006060848603121561204e5761204d611ea0565b5b600061205c86828701611ef3565b935050602061206d86828701611ef3565b925050604084013567ffffffffffffffff81111561208e5761208d611ea5565b5b61209a86828701612016565b9150509250925092565b6000819050919050565b6000819050919050565b60006120d36120ce6120c9846120a4565b6120ae565b6120a4565b9050919050565b6120e3816120b8565b82525050565b60006020820190506120fe60008301846120da565b92915050565b61210d816120a4565b811461211857600080fd5b50565b60008135905061212a81612104565b92915050565b6000806040838503121561214757612146611ea0565b5b600061215585828601611ef3565b92505060206121668582860161211b565b9150509250929050565b60008115159050919050565b61218581612170565b82525050565b60006020820190506121a0600083018461217c565b92915050565b600067ffffffffffffffff82169050919050565b6121c3816121a6565b81146121ce57600080fd5b50565b6000813590506121e0816121ba565b92915050565b600080604083850312156121fd576121fc611ea0565b5b600061220b85828601611ef3565b925050602061221c858286016121d1565b9150509250929050565b61222f816120a4565b82525050565b600060208201905061224a6000830184612226565b92915050565b60008060006060848603121561226957612268611ea0565b5b600061227786828701611ef3565b935050602061228886828701611ef3565b92505060406122998682870161211b565b9150509250925092565b6122ac81612170565b81146122b757600080fd5b50565b6000813590506122c9816122a3565b92915050565b600080604083850312156122e6576122e5611ea0565b5b60006122f485828601611ef3565b9250506020612305858286016122ba565b9150509250929050565b600060ff82169050919050565b6123258161230f565b82525050565b6000602082019050612340600083018461231c565b92915050565b61234f816120b8565b82525050565b600060208201905061236a6000830184612346565b92915050565b612379816120b8565b82525050565b60006020820190506123946000830184612370565b92915050565b600080604083850312156123b1576123b0611ea0565b5b60006123bf85828601611ef3565b925050602083013567ffffffffffffffff8111156123e0576123df611ea5565b5b6123ec85828601612016565b9150509250929050565b6000806040838503121561240d5761240c611ea0565b5b600061241b85828601611ef3565b925050602061242c85828601611ef3565b9150509250929050565b61243f816120b8565b82525050565b60608201600082015161245b6000850182612436565b50602082015161246e6020850182612436565b5060408201516124816040850182612436565b50505050565b600060608201905061249c6000830184612445565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124e957607f821691505b6020821081036124fc576124fb6124a2565b5b50919050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61253f82611fa5565b810181811067ffffffffffffffff8211171561255e5761255d612507565b5b80604052505050565b6000612571611e96565b905061257d8282612536565b919050565b600080fd5b612590816120a4565b811461259b57600080fd5b50565b6000813590506125ad81612587565b92915050565b600080fd5b600080fd5b600067ffffffffffffffff8211156125d8576125d7612507565b5b6125e182611fa5565b9050602081019050919050565b82818337600083830152505050565b600061261061260b846125bd565b612567565b90508281526020810184848401111561262c5761262b6125b8565b5b6126378482856125ee565b509392505050565b600082601f830112612654576126536125b3565b5b81356126648482602086016125fd565b91505092915050565b60006040828403121561268357612682612502565b5b61268d6040612567565b9050600061269d8482850161259e565b600083015250602082013567ffffffffffffffff8111156126c1576126c0612582565b5b6126cd8482850161263f565b60208301525092915050565b60006126e5368361266d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6127508161271b565b82525050565b600081519050919050565b600082825260208201905092915050565b600061277d82612756565b6127878185612761565b9350612797818560208601611f7b565b6127a081611fa5565b840191505092915050565b60006060820190506127c06000830186612747565b6127cd6020830185612226565b81810360408301526127df8184612772565b9050949350505050565b6127f2816120a4565b81146127fd57600080fd5b50565b60008151905061280f816127e9565b92915050565b60006020828403121561282b5761282a611ea0565b5b600061283984828501612800565b91505092915050565b60006040820190506128576000830185612346565b6128646020830184612346565b9392505050565b60006040820190506128806000830185612747565b61288d6020830184612226565b9392505050565b60008160601b9050919050565b60006128ac82612894565b9050919050565b60006128be826128a1565b9050919050565b6128d66128d182611eca565b6128b3565b82525050565b60006128e882846128c5565b60148201915081905092915050565b60007fffffff000000000000000000000000000000000000000000000000000000000082169050919050565b61292c816128f7565b82525050565b60006060820190506129476000830186612923565b6129546020830185612226565b6129616040830184612226565b949350505050565b600060808201905061297e6000830187612923565b61298b6020830186612226565b6129986040830185612226565b6129a56060830184612226565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129e3816129ae565b82525050565b60006080820190506129fe60008301876129da565b612a0b6020830186612226565b612a186040830185612226565b612a256060830184612226565b95945050505050565b600080600060608486031215612a4757612a46611ea0565b5b6000612a5586828701612800565b9350506020612a6686828701612800565b9250506040612a7786828701612800565b915050925092509256fea2646970667358221220bd721cdefc7f563b65d2e3fe1a8c2e896d520fcfc372797d5f32bafbe8b83e3c64736f6c63430008140033";
569
+ "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600490816200006a919062000127565b50600562000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61197380620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063313ce567116100cd57806396b2db3811610081578063a7d9ad6a11610066578063a7d9ad6a146102f9578063a9059cbb1461030c578063dd62ed3e1461031f57600080fd5b806396b2db38146102d3578063a42c0af9146102e657600080fd5b8063722713f7116100b2578063722713f7146102b05780638269bcc3146102b857806395d89b41146102cb57600080fd5b8063313ce5671461026757806370a082311461027657600080fd5b806313691c761161012457806323b872dd1161010957806323b872dd1461022e57806326a9b3f1146102415780632893c5b01461025457600080fd5b806313691c761461021257806318160ddd1461022757600080fd5b8063043d20851461015657806306fdde03146101b957806308a2032a146101ce578063095ea7b3146101ef575b600080fd5b61018f61016436600461146b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c1610354565b6040516101b091906114ea565b6101e16101dc366004611515565b6103e6565b6040519081526020016101b0565b6102026101fd366004611573565b61041d565b60405190151581526020016101b0565b61022561022036600461159d565b610437565b005b60006101e1565b6101e161023c3660046115e1565b61044e565b61020261024f36600461161d565b610470565b61022561026236600461159d565b610524565b604051600681526020016101b0565b6101e161028436600461146b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120015490565b6101e1610536565b6102026102c636600461146b565b610546565b6101c16105ca565b6101e16102e136600461161d565b6105d9565b6102026102f436600461164e565b61065c565b6101e161030736600461164e565b610684565b6101e161031a366004611573565b6106a1565b61033261032d36600461169c565b6106b7565b60408051825181526020808401519082015291810151908201526060016101b0565b606060048054610363906116cf565b80601f016020809104026020016040519081016040528092919081815260200182805461038f906116cf565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b600033816103fb6103f6856117c3565b610736565b90506104088683836107e2565b6104138686836108cf565b9695505050505050565b60003361042b818585610981565b60019150505b92915050565b6104498261044483610b93565b610c03565b505050565b60003361045c8582856107e2565b6104678585856108cf565b95945050505050565b60008061047c33610c68565b905082156104d45733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080546104c9906104c390610c9e565b83610cbb565b60019091015561042b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290208054610513906104c390610c9e565b600290910155600191505092915050565b6104498261053183610b93565b610da0565b600061054133610dfe565b905090565b60008061055233610dfe565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506105ab8184610cbb565b3360009081526001602081905260409091208101919091559392505050565b606060058054610363906116cf565b600081156106225733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461061b90610c9e565b9050610431565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205461061b90610c9e565b6000338161066c6103f6856117c3565b9050610679828683610981565b506001949350505050565b600033816106946103f6856117c3565b90506104678286836108cf565b6000336106af8185856108cf565b949350505050565b6106db60405180606001604052806000815260200160008152602001600081525090565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529283529083902083516060810185528154815260018201549381019390935201549181019190915290565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e109261079f927f04000000000000000000000000000000000000000000000000000000000000009290916004016118b5565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043191906118f6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205461081190610c9e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602090815260408083209388168352929052908120549192509061085390610c9e565b905060006108718261086c67ffffffffffffffff610b93565b610e2d565b9050600061087f8486610ead565b9050600061088d8487610ead565b905060006108b76108a7856108a28686610ec2565b610ec2565b6108b1878a610ed6565b87610eeb565b90506108c4898983610981565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610926576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610976576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6106af848484610fb0565b73ffffffffffffffffffffffffffffffffffffffff83166109d1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b73ffffffffffffffffffffffffffffffffffffffff8216610a21576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6000610a2c82611142565b90506000610a3985610c68565b90506000610a478483610cbb565b9050610a5285610c68565b91506000610a608584610cbb565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a78484604051610b82929190918252602082015260400190565b60405180910390a350505050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b609060440161079f565b600073ffffffffffffffffffffffffffffffffffffffff8316610c55576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6183600084610fb0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610431575090919050565b600081600003610cb2576104316000610b93565b6104318261119c565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891610d5d917f04000000000000000000000000000000000000000000000000000000000000009188916038016118b5565b6020604051808303816000875af1158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906118f6565b600073ffffffffffffffffffffffffffffffffffffffff8316610df2576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6160008484610fb0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610c6181610c9e565b60006064637c12a1eb610e42600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610d5d565b6000606463dd148693610e42600480856111ac565b6000606463fb7da35f610e428380806111ac565b6000606463371d1bf2610e42600480856111ac565b600060646320cc408d610f00600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906118f6565b6000808281610fbf6001611209565b905073ffffffffffffffffffffffffffffffffffffffff8716611023576000610fe9600354610c9e565b9050610ff58187611268565b905061100081611142565b600355600061100e88610dfe565b905061101a8188611268565b9450505061106b565b600061102e88610dfe565b9050600061103b88610dfe565b9050600061104a83838a61127d565b9097509450905061105b8a8261133b565b6110658683610ed6565b94505050505b73ffffffffffffffffffffffffffffffffffffffff86166110b3576000611093600354610c9e565b905061109f8184610ed6565b90506110aa81611142565b600355506110bd565b6110bd868461133b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611116858b610cbb565b611120868b610cbb565b6040805192835260208301919091520160405180910390a39695505050505050565b6000606463c50c9c0260045b60f81b846040518363ffffffff1660e01b815260040161079f9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e5600461114e565b60008160028111156111c0576111c0611886565b60ff1660088460048111156111d7576111d7611886565b61ffff16901b61ffff1660108660048111156111f5576111f5611886565b62ffffff16901b171760e81b949350505050565b6000808261121857600061121b565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610d5d565b60006064638c5d0150610e42600480856111ac565b6000808080808060646356c72d28611298600480808661138e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af1158015611305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611329919061190f565b919b909a509098509650505050505050565b600061134683610c68565b9050611352828261140e565b73ffffffffffffffffffffffffffffffffffffffff90931660009081526001602081815260409092208551815594909101519301929092555050565b60008160028111156113a2576113a2611886565b60ff1660088460048111156113b9576113b9611886565b61ffff16901b61ffff1660108660048111156113d7576113d7611886565b62ffffff16901b62ffffff1660188860048111156113f7576113f7611886565b63ffffffff16901b17171760e01b95945050505050565b604080518082019091526000808252602082015261142b83611142565b81526114378383610cbb565b602082015292915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461146657600080fd5b919050565b60006020828403121561147d57600080fd5b610c6182611442565b6000815180845260005b818110156114ac57602081850181015186830182015201611490565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c616020830184611486565b60006040828403121561150f57600080fd5b50919050565b60008060006060848603121561152a57600080fd5b61153384611442565b925061154160208501611442565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114fd565b9150509250925092565b6000806040838503121561158657600080fd5b61158f83611442565b946020939093013593505050565b600080604083850312156115b057600080fd5b6115b983611442565b9150602083013567ffffffffffffffff811681146115d657600080fd5b809150509250929050565b6000806000606084860312156115f657600080fd5b6115ff84611442565b925061160d60208501611442565b9150604084013590509250925092565b6000806040838503121561163057600080fd5b61163983611442565b9150602083013580151581146115d657600080fd5b6000806040838503121561166157600080fd5b61166a83611442565b9150602083013567ffffffffffffffff81111561168657600080fd5b611692858286016114fd565b9150509250929050565b600080604083850312156116af57600080fd5b6116b883611442565b91506116c660208401611442565b90509250929050565b600181811c908216806116e357607f821691505b60208210810361150f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176e5761176e61171c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117bb576117bb61171c565b604052919050565b6000604082360312156117d557600080fd5b6117dd61174b565b8235815260208084013567ffffffffffffffff808211156117fd57600080fd5b9085019036601f83011261181057600080fd5b8135818111156118225761182261171c565b611852847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611774565b9150808252368482850101111561186857600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006104676060830184611486565b60006020828403121561190857600080fd5b5051919050565b60008060006060848603121561192457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220220cf53a1998e9498c27c1e74b75c235e6a79759017e55807ea7d8f015a6329664736f6c63430008130033";
570
570
 
571
571
  type PrivateERC20MockConstructorParams =
572
572
  | [signer?: Signer]
@@ -575,7 +575,7 @@ const _abi = [
575
575
  ] as const;
576
576
 
577
577
  const _bytecode =
578
- "0x60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4578616d706c65000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45584c000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000324565b508060019081620000a1919062000324565b5050506200040b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200012c57607f821691505b602082108103620001425762000141620000e4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620001ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200016d565b620001b886836200016d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000205620001ff620001f984620001d0565b620001da565b620001d0565b9050919050565b6000819050919050565b6200022183620001e4565b6200023962000230826200020c565b8484546200017a565b825550505050565b600090565b6200025062000241565b6200025d81848462000216565b505050565b5b8181101562000285576200027960008262000246565b60018101905062000263565b5050565b601f821115620002d4576200029e8162000148565b620002a9846200015d565b81016020851015620002b9578190505b620002d1620002c8856200015d565b83018262000262565b50505b505050565b600082821c905092915050565b6000620002f960001984600802620002d9565b1980831691505092915050565b6000620003148383620002e6565b9150826002028217905092915050565b6200032f82620000aa565b67ffffffffffffffff8111156200034b576200034a620000b5565b5b62000357825462000113565b6200036482828562000289565b600060209050601f8311600181146200039c576000841562000387578287015190505b62000393858262000306565b86555062000403565b601f198416620003ac8662000148565b60005b82811015620003d657848901518255600182019150602085019450602081019050620003af565b86831015620003f65784890151620003f2601f891682620002e6565b8355505b6001600288020188555050505b505050505050565b612ca6806200041b6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb46514610284578063b88d4fde146102a0578063c87b56dd146102bc578063e985e9c5146102ec576100f5565b80636352211e146101ea57806368862e1b1461021a57806370a082311461023657806395d89b4114610266576100f5565b8063095ea7b3116100d3578063095ea7b31461017857806318160ddd1461019457806323b872dd146101b257806342842e0e146101ce576100f5565b806301ffc9a7146100fa57806306fdde031461012a578063081812fc14610148575b600080fd5b610114600480360381019061010f9190611e3b565b61031c565b6040516101219190611e83565b60405180910390f35b610132610379565b60405161013f9190611f2e565b60405180910390f35b610162600480360381019061015d9190611f86565b61040b565b60405161016f9190611ff4565b60405180910390f35b610192600480360381019061018d919061203b565b610427565b005b61019c61043d565b6040516101a9919061208a565b60405180910390f35b6101cc60048036038101906101c791906120a5565b610447565b005b6101e860048036038101906101e391906120a5565b610549565b005b61020460048036038101906101ff9190611f86565b610569565b6040516102119190611ff4565b60405180910390f35b610234600480360381019061022f919061211c565b61057b565b005b610250600480360381019061024b9190612178565b6105fa565b60405161025d919061208a565b60405180910390f35b61026e6106b4565b60405161027b9190611f2e565b60405180910390f35b61029e600480360381019061029991906121d1565b610746565b005b6102ba60048036038101906102b59190612346565b61075c565b005b6102d660048036038101906102d19190611f86565b610779565b6040516102e391906124dd565b60405180910390f35b610306600480360381019061030191906124ff565b610801565b6040516103139190611e83565b60405180910390f35b60008060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610372575061037182610895565b5b9050919050565b6060600080546103889061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546103b49061256e565b80156104015780601f106103d657610100808354040283529160200191610401565b820191906000526020600020905b8154815290600101906020018083116103e457829003601f168201915b5050505050905090565b60006104168261090f565b5061042082610997565b9050919050565b61043982826104346109d4565b6109dc565b5050565b6000600754905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104b95760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016104b09190611ff4565b60405180910390fd5b60006104cd83836104c86109d4565b6109ee565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610543578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161053a9392919061259f565b60405180910390fd5b50505050565b6105648383836040518060200160405280600081525061075c565b505050565b60006105748261090f565b9050919050565b6000600754905061058c8382610a9c565b610597338284610b95565b6001600760008282546105aa9190612605565b92505081905550808373ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066d5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106649190611ff4565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600180546106c39061256e565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef9061256e565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b6107586107516109d4565b8383610bbe565b5050565b610767848484610447565b61077384848484610d2d565b50505050565b610781611cff565b60066000838152602001908152602001600020600101604051806020016040529081600082018054806020026020016040519081016040528092919081815260200182805480156107f157602002820191906000526020600020905b8154815260200190600101908083116107dd575b5050505050815250509050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610908575061090782610ee4565b5b9050919050565b60008061091b83610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361098e57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610985919061208a565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6109e98383836001610f8b565b505050565b600080610a726006600086815260200190815260200160002060000160405180602001604052908160008201805480602002602001604051908101604052809291908181526020018280548015610a6457602002820191906000526020600020905b815481526020019060010190808311610a50575b505050505081525050611150565b90506000610a8186868661122e565b9050610a908686846000611448565b80925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b0e5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610b059190611ff4565b60405180910390fd5b6000610b1c838360006109ee565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b905760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401610b879190611ff4565b60405180910390fd5b505050565b6000610ba982610ba4906128f8565b611584565b9050610bb88484836001611448565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c2f57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610c269190611ff4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610d209190611e83565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115610ede578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610d716109d4565b8685856040518563ffffffff1660e01b8152600401610d939493929190612960565b6020604051808303816000875af1925050508015610dcf57506040513d601f19601f82011682018060405250810190610dcc91906129c1565b60015b610e53573d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b506000815103610e4b57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610e429190611ff4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610edc57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610ed39190611ff4565b60405180910390fd5b505b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080610fc45750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156110f8576000610fd48461090f565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561103f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561105257506110508184610801565b155b1561109457826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161108b9190611ff4565b60405180910390fd5b81156110f657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b611158611d12565b60008260000151519050600060405180602001604052808367ffffffffffffffff8111156111895761118861221b565b5b6040519080825280602002602001820160405280156111b75781602001602082028036833780820191505090505b50815250905060005b82811015611223576111ef856000015182815181106111e2576111e16129ee565b5b60200260200101516116eb565b82600001518281518110611206576112056129ee565b5b6020026020010181815250508061121c90612a1d565b90506111c0565b508092505050919050565b60008061123a84610f4e565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461127c5761127b818486611788565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461130d576112be600085600080610f8b565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611390576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff1661146984610569565b73ffffffffffffffffffffffffffffffffffffffff16036114c157826040517f868439130000000000000000000000000000000000000000000000000000000081526004016114b8919061208a565b60405180910390fd5b60006114cd838661184c565b90508115611541578060066000868152602001908152602001600020600082015181600001600082015181600001908051906020019061150e929190611d25565b5050506020820151816001016000820151816000019080519060200190611536929190611d25565b50505090505061157d565b8060200151600660008681526020019081526020016000206001016000820151816000019080519060200190611578929190611d25565b509050505b5050505050565b61158c611d12565b600082602001515190508083600001516000015151146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890612ab1565b60405180910390fd5b600060405180602001604052808367ffffffffffffffff8111156116085761160761221b565b5b6040519080825280602002602001820160405280156116365781602001602082028036833780820191505090505b508152509050611644611d72565b60005b838110156116df57856000015160000151818151811061166a576116696129ee565b5b602002602001015182600001818152505085602001518181518110611692576116916129ee565b5b602002602001015182602001819052506116ab8261187d565b836000015182815181106116c2576116c16129ee565b5b602002602001018181525050806116d890612a1d565b9050611647565b50819350505050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663d2c135e560048081111561171d5761171c612ad1565b5b60f81b846040518363ffffffff1660e01b815260040161173e929190612b3b565b6020604051808303816000875af115801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190612b79565b9050919050565b611793838383611924565b61184757600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180857806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117ff919061208a565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161183e929190612ba6565b60405180910390fd5b505050565b611854611d8c565b61185d836119e5565b816000018190525061186f8383611ac3565b816020018190525092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663e4f36e106004808111156118af576118ae612ad1565b5b60f81b846000015185602001516040518463ffffffff1660e01b81526004016118da93929190612bcf565b6020604051808303816000875af11580156118f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191d9190612b79565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119dc57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061199d575061199c8484610801565b5b806119db57508273ffffffffffffffffffffffffffffffffffffffff166119c383610997565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6119ed611cff565b60008260000151519050600060405180602001604052808367ffffffffffffffff811115611a1e57611a1d61221b565b5b604051908082528060200260200182016040528015611a4c5781602001602082028036833780820191505090505b50815250905060005b82811015611ab857611a8485600001518281518110611a7757611a766129ee565b5b6020026020010151611ba3565b82600001518281518110611a9b57611a9a6129ee565b5b60200260200101818152505080611ab190612a1d565b9050611a55565b508092505050919050565b611acb611cff565b60008360000151519050600060405180602001604052808367ffffffffffffffff811115611afc57611afb61221b565b5b604051908082528060200260200182016040528015611b2a5781602001602082028036833780820191505090505b50815250905060005b82811015611b9757611b6386600001518281518110611b5557611b546129ee565b5b602002602001015186611c40565b82600001518281518110611b7a57611b796129ee565b5b60200260200101818152505080611b9090612a1d565b9050611b33565b50809250505092915050565b6000606473ffffffffffffffffffffffffffffffffffffffff1663c50c9c02600480811115611bd557611bd4612ad1565b5b60f81b846040518363ffffffff1660e01b8152600401611bf6929190612b3b565b6020604051808303816000875af1158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190612b79565b9050919050565b6000606473ffffffffffffffffffffffffffffffffffffffff16633c6f0e68600480811115611c7257611c71612ad1565b5b60f81b8585604051602001611c879190612c55565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611cb493929190612bcf565b6020604051808303816000875af1158015611cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf79190612b79565b905092915050565b6040518060200160405280606081525090565b6040518060200160405280606081525090565b828054828255906000526020600020908101928215611d61579160200282015b82811115611d60578251825591602001919060010190611d45565b5b509050611d6e9190611db2565b5090565b604051806040016040528060008152602001606081525090565b6040518060400160405280611d9f611cff565b8152602001611dac611cff565b81525090565b5b80821115611dcb576000816000905550600101611db3565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611e1881611de3565b8114611e2357600080fd5b50565b600081359050611e3581611e0f565b92915050565b600060208284031215611e5157611e50611dd9565b5b6000611e5f84828501611e26565b91505092915050565b60008115159050919050565b611e7d81611e68565b82525050565b6000602082019050611e986000830184611e74565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ed8578082015181840152602081019050611ebd565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f0082611e9e565b611f0a8185611ea9565b9350611f1a818560208601611eba565b611f2381611ee4565b840191505092915050565b60006020820190508181036000830152611f488184611ef5565b905092915050565b6000819050919050565b611f6381611f50565b8114611f6e57600080fd5b50565b600081359050611f8081611f5a565b92915050565b600060208284031215611f9c57611f9b611dd9565b5b6000611faa84828501611f71565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fde82611fb3565b9050919050565b611fee81611fd3565b82525050565b60006020820190506120096000830184611fe5565b92915050565b61201881611fd3565b811461202357600080fd5b50565b6000813590506120358161200f565b92915050565b6000806040838503121561205257612051611dd9565b5b600061206085828601612026565b925050602061207185828601611f71565b9150509250929050565b61208481611f50565b82525050565b600060208201905061209f600083018461207b565b92915050565b6000806000606084860312156120be576120bd611dd9565b5b60006120cc86828701612026565b93505060206120dd86828701612026565b92505060406120ee86828701611f71565b9150509250925092565b600080fd5b600060408284031215612113576121126120f8565b5b81905092915050565b6000806040838503121561213357612132611dd9565b5b600061214185828601612026565b925050602083013567ffffffffffffffff81111561216257612161611dde565b5b61216e858286016120fd565b9150509250929050565b60006020828403121561218e5761218d611dd9565b5b600061219c84828501612026565b91505092915050565b6121ae81611e68565b81146121b957600080fd5b50565b6000813590506121cb816121a5565b92915050565b600080604083850312156121e8576121e7611dd9565b5b60006121f685828601612026565b9250506020612207858286016121bc565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61225382611ee4565b810181811067ffffffffffffffff821117156122725761227161221b565b5b80604052505050565b6000612285611dcf565b9050612291828261224a565b919050565b600067ffffffffffffffff8211156122b1576122b061221b565b5b6122ba82611ee4565b9050602081019050919050565b82818337600083830152505050565b60006122e96122e484612296565b61227b565b90508281526020810184848401111561230557612304612216565b5b6123108482856122c7565b509392505050565b600082601f83011261232d5761232c612211565b5b813561233d8482602086016122d6565b91505092915050565b600080600080608085870312156123605761235f611dd9565b5b600061236e87828801612026565b945050602061237f87828801612026565b935050604061239087828801611f71565b925050606085013567ffffffffffffffff8111156123b1576123b0611dde565b5b6123bd87828801612318565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b600061241a61241561241084611f50565b6123f5565b611f50565b9050919050565b61242a816123ff565b82525050565b600061243c8383612421565b60208301905092915050565b6000602082019050919050565b6000612460826123c9565b61246a81856123d4565b9350612475836123e5565b8060005b838110156124a657815161248d8882612430565b975061249883612448565b925050600181019050612479565b5085935050505092915050565b600060208301600083015184820360008601526124d08282612455565b9150508091505092915050565b600060208201905081810360008301526124f781846124b3565b905092915050565b6000806040838503121561251657612515611dd9565b5b600061252485828601612026565b925050602061253585828601612026565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061258657607f821691505b6020821081036125995761259861253f565b5b50919050565b60006060820190506125b46000830186611fe5565b6125c1602083018561207b565b6125ce6040830184611fe5565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061261082611f50565b915061261b83611f50565b9250828201905080821115612633576126326125d6565b5b92915050565b600080fd5b600080fd5b600067ffffffffffffffff82111561265e5761265d61221b565b5b602082029050602081019050919050565b600080fd5b61267d81611f50565b811461268857600080fd5b50565b60008135905061269a81612674565b92915050565b60006126b36126ae84612643565b61227b565b905080838252602082019050602084028301858111156126d6576126d561266f565b5b835b818110156126ff57806126eb888261268b565b8452602084019350506020810190506126d8565b5050509392505050565b600082601f83011261271e5761271d612211565b5b813561272e8482602086016126a0565b91505092915050565b60006020828403121561274d5761274c612639565b5b612757602061227b565b9050600082013567ffffffffffffffff8111156127775761277661263e565b5b61278384828501612709565b60008301525092915050565b600067ffffffffffffffff8211156127aa576127a961221b565b5b602082029050602081019050919050565b60006127ce6127c98461278f565b61227b565b905080838252602082019050602084028301858111156127f1576127f061266f565b5b835b8181101561283857803567ffffffffffffffff81111561281657612815612211565b5b8086016128238982612318565b855260208501945050506020810190506127f3565b5050509392505050565b600082601f83011261285757612856612211565b5b81356128678482602086016127bb565b91505092915050565b60006040828403121561288657612885612639565b5b612890604061227b565b9050600082013567ffffffffffffffff8111156128b0576128af61263e565b5b6128bc84828501612737565b600083015250602082013567ffffffffffffffff8111156128e0576128df61263e565b5b6128ec84828501612842565b60208301525092915050565b60006129043683612870565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006129328261290b565b61293c8185612916565b935061294c818560208601611eba565b61295581611ee4565b840191505092915050565b60006080820190506129756000830187611fe5565b6129826020830186611fe5565b61298f604083018561207b565b81810360608301526129a18184612927565b905095945050505050565b6000815190506129bb81611e0f565b92915050565b6000602082840312156129d7576129d6611dd9565b5b60006129e5848285016129ac565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612a2882611f50565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a5a57612a596125d6565b5b600182019050919050565b7f4d50435f434f52453a20494e56414c49445f494e5055545f5445585400000000600082015250565b6000612a9b601c83611ea9565b9150612aa682612a65565b602082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b612b3581612b00565b82525050565b6000604082019050612b506000830185612b2c565b612b5d602083018461207b565b9392505050565b600081519050612b7381611f5a565b92915050565b600060208284031215612b8f57612b8e611dd9565b5b6000612b9d84828501612b64565b91505092915050565b6000604082019050612bbb6000830185611fe5565b612bc8602083018461207b565b9392505050565b6000606082019050612be46000830186612b2c565b612bf1602083018561207b565b8181036040830152612c038184612927565b9050949350505050565b60008160601b9050919050565b6000612c2582612c0d565b9050919050565b6000612c3782612c1a565b9050919050565b612c4f612c4a82611fd3565b612c2c565b82525050565b6000612c618284612c3e565b6014820191508190509291505056fea2646970667358221220a4b17b38841a46a489c5635a2699344a47b440e120cf8fb8098b35aaa098cbb764736f6c63430008140033";
578
+ "0x60806040523480156200001157600080fd5b50604051806040016040528060078152602001664578616d706c6560c81b8152506040518060400160405280600381526020016211561360ea1b81525081600090816200005f91906200011c565b5060016200006e82826200011c565b505050620001e8565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a257607f821691505b602082108103620000c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011757600081815260208120601f850160051c81016020861015620000f25750805b601f850160051c820191505b818110156200011357828155600101620000fe565b5050505b505050565b81516001600160401b0381111562000138576200013862000077565b62000150816200014984546200008d565b84620000c9565b602080601f8311600181146200018857600084156200016f5750858301515b600019600386901b1c1916600185901b17855562000113565b600085815260208120601f198616915b82811015620001b95788860151825594840194600190910190840162000198565b5085821015620001d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611fee80620001f86000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636352211e11610097578063a22cb46511610066578063a22cb465146101fd578063b88d4fde14610210578063c87b56dd14610223578063e985e9c51461024357600080fd5b80636352211e146101bc57806368862e1b146101cf57806370a08231146101e257806395d89b41146101f557600080fd5b8063095ea7b3116100d3578063095ea7b31461016f57806318160ddd1461018457806323b872dd1461019657806342842e0e146101a957600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d610108366004611843565b61028c565b60405190151581526020015b60405180910390f35b61012a6102c7565b60405161011991906118c4565b61014a6101453660046118d7565b610359565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61018261017d366004611919565b61038f565b005b6007545b604051908152602001610119565b6101826101a4366004611943565b61039e565b6101826101b7366004611943565b610494565b61014a6101ca3660046118d7565b6104b4565b6101826101dd36600461197f565b6104bf565b6101886101f03660046119d4565b610537565b61012a6105b2565b61018261020b3660046119ef565b6105c1565b61018261021e366004611b78565b6105cc565b6102366102313660046118d7565b6105e3565b6040516101199190611be0565b61010d610251366004611c30565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff00000000000000000000000000000000000000000000000000000000821615806102c157506102c182610660565b92915050565b6060600080546102d690611c63565b80601f016020809104026020016040519081016040528092919081815260200182805461030290611c63565b801561034f5780601f106103245761010080835404028352916020019161034f565b820191906000526020600020905b81548152906001019060200180831161033257829003601f168201915b5050505050905090565b6000610364826106f7565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166102c1565b61039a828233610756565b5050565b73ffffffffffffffffffffffffffffffffffffffff82166103f3576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610400838333610763565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461048e576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016103ea565b50505050565b6104af838383604051806020016040528060008152506105cc565b505050565b60006102c1826106f7565b6007546104cc83826107f9565b6104d73382846108aa565b6001600760008282546104ea9190611ce5565b9091555050604051819073ffffffffffffffffffffffffffffffffffffffff8516907f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe90600090a3505050565b600073ffffffffffffffffffffffffffffffffffffffff8216610589576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546102d690611c63565b61039a3383836108cc565b6105d784848461039e565b61048e848484846109c9565b604080516020808201835260608252600084815260068252839020835160019091018054808402830186018652928201838152939491939092849284919084018282801561065057602002820191906000526020600020905b81548152602001906001019080831161063c575b5050505050815250509050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102c157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c1565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806102c1576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b6104af8383836001610bc0565b60008281526006602090815260408083208151815480850282018401845293810184815285946107d29492939284929184918401828280156107c457602002820191906000526020600020905b8154815260200190600101908083116107b0575b505050505081525050610d8b565b905060006107e1868686610e5b565b90506107f08686846000610fd8565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff8216610849576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b600061085783836000610763565b905073ffffffffffffffffffffffffffffffffffffffff8116156104af576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016103ea565b60006108bd6108b883611da1565b6110d4565b905061048e8484836001610fd8565b73ffffffffffffffffffffffffffffffffffffffff8216610931576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016103ea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b1561048e576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290610a3e903390889087908790600401611e91565b6020604051808303816000875af1925050508015610a97575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a9491810190611eda565b60015b610b26573d808015610ac5576040519150601f19603f3d011682016040523d82523d6000602084013e610aca565b606091505b508051600003610b1e576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610bb9576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016103ea565b5050505050565b8080610be1575073ffffffffffffffffffffffffffffffffffffffff821615155b15610d36576000610bf1846106f7565b905073ffffffffffffffffffffffffffffffffffffffff831615801590610c4457508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015610c83575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15610cd2576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016103ea565b8115610d3457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff811115610dc557610dc5611a20565b604051908082528060200260200182016040528015610dee578160200160208202803683370190505b509052905060005b82811015610e5357610e2485600001518281518110610e1757610e17611ef7565b6020026020010151611254565b8251805183908110610e3857610e38611ef7565b6020908102919091010152610e4c81611f26565b9050610df6565b509392505050565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690831615610e9557610e958184866112f1565b73ffffffffffffffffffffffffffffffffffffffff811615610f0b57610ebf600085600080610bc0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615610f545773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000610fe3846104b4565b73ffffffffffffffffffffffffffffffffffffffff1603611033576040517f86843913000000000000000000000000000000000000000000000000000000008152600481018490526024016103ea565b600061103f83866113a1565b9050811561109e5760008481526006602090815260409091208251805180518594849261107292849291909101906117b2565b505050602082810151805180519192600185019261109392849201906117b2565b505050905050610bb9565b602080820151600086815260068352604090208151805192936001909201926110ca92849201906117b2565b5050505050505050565b604080516020810190915260608152602082015151825151518114611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4d50435f434f52453a20494e56414c49445f494e5055545f544558540000000060448201526064016103ea565b600060405180602001604052808367ffffffffffffffff81111561117b5761117b611a20565b6040519080825280602002602001820160405280156111a4578160200160208202803683370190505b50905260408051808201909152600081526060602082015290915060005b8381101561124a578551518051829081106111df576111df611ef7565b602090810291909101810151835286015180518290811061120257611202611ef7565b6020026020010151826020018190525061121b826113ec565b835180518390811061122f5761122f611ef7565b602090810291909101015261124381611f26565b90506111c2565b5090949350505050565b6000606463d2c135e560045b60f81b846040518363ffffffff1660e01b81526004016112ae9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6020604051808303816000875af11580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c19190611f5e565b6112fc838383611455565b6104af5773ffffffffffffffffffffffffffffffffffffffff8316611350576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016103ea565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016103ea565b6113cc6040805160608082018352818301818152825282516020818101909452908152909182015290565b6113d58361151c565b81526113e183836115e4565b602082015292915050565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e10926112ae927f0400000000000000000000000000000000000000000000000000000000000000929091600401611f77565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061151457508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806114e3575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b80611514575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b6040805160208101909152606081528151516040805160208101909152600090808367ffffffffffffffff81111561155657611556611a20565b60405190808252806020026020018201604052801561157f578160200160208202803683370190505b509052905060005b82811015610e53576115b5856000015182815181106115a8576115a8611ef7565b60200260200101516116b6565b82518051839081106115c9576115c9611ef7565b60209081029190910101526115dd81611f26565b9050611587565b6040805160208101909152606081528251516040805160208101909152600090808367ffffffffffffffff81111561161e5761161e611a20565b604051908082528060200260200182016040528015611647578160200160208202803683370190505b509052905060005b828110156116ad5761167e8660000151828151811061167057611670611ef7565b6020026020010151866116c6565b825180518390811061169257611692611ef7565b60209081029190910101526116a681611f26565b905061164f565b50949350505050565b6000606463c50c9c026004611260565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891611768917f0400000000000000000000000000000000000000000000000000000000000000918891603801611f77565b6020604051808303816000875af1158015611787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ab9190611f5e565b9392505050565b8280548282559060005260206000209081019282156117ed579160200282015b828111156117ed5782518255916020019190600101906117d2565b506117f99291506117fd565b5090565b5b808211156117f957600081556001016117fe565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461184057600080fd5b50565b60006020828403121561185557600080fd5b81356117ab81611812565b6000815180845260005b818110156118865760208185018101518683018201520161186a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006117ab6020830184611860565b6000602082840312156118e957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461191457600080fd5b919050565b6000806040838503121561192c57600080fd5b611935836118f0565b946020939093013593505050565b60008060006060848603121561195857600080fd5b611961846118f0565b925061196f602085016118f0565b9150604084013590509250925092565b6000806040838503121561199257600080fd5b61199b836118f0565b9150602083013567ffffffffffffffff8111156119b757600080fd5b8301604081860312156119c957600080fd5b809150509250929050565b6000602082840312156119e657600080fd5b6117ab826118f0565b60008060408385031215611a0257600080fd5b611a0b836118f0565b9150602083013580151581146119c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611a7257611a72611a20565b60405290565b6040516020810167ffffffffffffffff81118282101715611a7257611a72611a20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ae257611ae2611a20565b604052919050565b600082601f830112611afb57600080fd5b813567ffffffffffffffff811115611b1557611b15611a20565b611b4660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611a9b565b818152846020838601011115611b5b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611b8e57600080fd5b611b97856118f0565b9350611ba5602086016118f0565b925060408501359150606085013567ffffffffffffffff811115611bc857600080fd5b611bd487828801611aea565b91505092959194509250565b6020808252825182820182905280516040840181905260009291820190839060608601905b80831015611c255783518252928401926001929092019190840190611c05565b509695505050505050565b60008060408385031215611c4357600080fd5b611c4c836118f0565b9150611c5a602084016118f0565b90509250929050565b600181811c90821680611c7757607f821691505b602082108103611cb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102c1576102c1611cb6565b600067ffffffffffffffff821115611d1257611d12611a20565b5060051b60200190565b600082601f830112611d2d57600080fd5b81356020611d42611d3d83611cf8565b611a9b565b82815260059290921b84018101918181019086841115611d6157600080fd5b8286015b84811015611c2557803567ffffffffffffffff811115611d855760008081fd5b611d938986838b0101611aea565b845250918301918301611d65565b600060408236031215611db357600080fd5b611dbb611a4f565b823567ffffffffffffffff80821115611dd357600080fd5b81850191506020808336031215611de957600080fd5b611df1611a78565b833583811115611e0057600080fd5b939093019236601f850112611e1457600080fd5b8335611e22611d3d82611cf8565b81815260059190911b85018301908381019036831115611e4157600080fd5b958401955b82871015611e5f57863582529584019590840190611e46565b83525050845285810135925081831115611e7857600080fd5b611e8436848801611d1c565b9084015250909392505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611ed06080830184611860565b9695505050505050565b600060208284031215611eec57600080fd5b81516117ab81611812565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611f5757611f57611cb6565b5060010190565b600060208284031215611f7057600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006107f0606083018461186056fea264697066735822122051d021c490641d3965c29600295664b975a012f27aec1d9e9e3095bbf428190f64736f6c63430008130033";
579
579
 
580
580
  type PrivateERC721URIStorageMockConstructorParams =
581
581
  | [signer?: Signer]