@gooddollar/goodcollective-contracts 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.dbg.json +4 -0
  2. package/artifacts/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.json +995 -0
  3. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.dbg.json +4 -0
  4. package/artifacts/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.json +113 -0
  5. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.dbg.json +4 -0
  6. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.json +2210 -0
  7. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.dbg.json +4 -0
  8. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IIdentityV2.json +30 -0
  9. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.dbg.json +4 -0
  10. package/artifacts/contracts/DirectPayments/DirectPaymentsPool.sol/IMembersValidator.json +45 -0
  11. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.dbg.json +4 -0
  12. package/artifacts/contracts/DirectPayments/ProvableNFT.sol/ProvableNFT.json +1187 -0
  13. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.dbg.json +4 -0
  14. package/artifacts/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.json +831 -0
  15. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.dbg.json +4 -0
  16. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IGoodCollectiveSuperApp.json +42 -0
  17. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.dbg.json +4 -0
  18. package/artifacts/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.json +61 -0
  19. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.dbg.json +4 -0
  20. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/IRegisterSuperapp.json +47 -0
  21. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.dbg.json +4 -0
  22. package/artifacts/contracts/GoodCollective/SuperAppBaseFlow.sol/SuperAppBaseFlow.json +320 -0
  23. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  24. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +30 -0
  25. package/artifacts/contracts/Interfaces.sol/IMembersValidator.dbg.json +4 -0
  26. package/artifacts/contracts/Interfaces.sol/IMembersValidator.json +45 -0
  27. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.dbg.json +4 -0
  28. package/artifacts/contracts/UBI/UBIPool.sol/UBIPool.json +2078 -0
  29. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.dbg.json +4 -0
  30. package/artifacts/contracts/UBI/UBIPoolFactory.sol/UBIPoolFactory.json +1011 -0
  31. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.dbg.json +4 -0
  32. package/artifacts/contracts/test/HelperLibraryTest.sol/HelperLibraryTest.json +90 -0
  33. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.dbg.json +4 -0
  34. package/artifacts/contracts/utils/HelperLibrary.sol/HelperLibrary.json +117 -0
  35. package/artifacts/contracts/utils/Recover.sol/Recover.dbg.json +4 -0
  36. package/artifacts/contracts/utils/Recover.sol/Recover.json +120 -0
  37. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.dbg.json +4 -0
  38. package/artifacts/contracts/utils/SwapRouterMock.sol/SwapRouterMock.json +119 -0
  39. package/contracts/DirectPayments/DirectPaymentsFactory.sol +13 -1
  40. package/contracts/DirectPayments/DirectPaymentsPool.sol +22 -0
  41. package/contracts/UBI/UBIPool.sol +62 -18
  42. package/contracts/UBI/UBIPoolFactory.sol +13 -1
  43. package/contracts/utils/Recover.sol +16 -0
  44. package/package.json +3 -5
  45. package/releases/deployment.json +308 -134
  46. package/typechain-types/contracts/DirectPayments/DirectPaymentsFactory.ts +54 -0
  47. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary.ts +77 -0
  48. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary.ts +77 -0
  49. package/typechain-types/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  50. package/typechain-types/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.ts +37 -0
  51. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IClaimable.ts +92 -0
  52. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IModule.ts +196 -0
  53. package/typechain-types/contracts/UBI/MultiClaimModule.sol/MultiClaimModule.ts +242 -0
  54. package/typechain-types/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  55. package/typechain-types/contracts/UBI/UBIPool.ts +37 -0
  56. package/typechain-types/contracts/UBI/UBIPoolFactory.ts +54 -0
  57. package/typechain-types/contracts/utils/Recover.ts +263 -0
  58. package/typechain-types/contracts/utils/index.ts +1 -0
  59. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsFactory__factory.ts +33 -1
  60. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPayemntsLibrary__factory.ts +96 -0
  61. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/DirectPaymentsLibrary__factory.ts +96 -0
  62. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary.sol/index.ts +5 -0
  63. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsLibrary__factory.ts +1 -1
  64. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool__factory.ts +24 -1
  65. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IClaimable__factory.ts +33 -0
  66. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IModule__factory.ts +84 -0
  67. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/MultiClaimModule__factory.ts +150 -0
  68. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/index.ts +6 -0
  69. package/typechain-types/factories/contracts/UBI/UBIPoolFactory__factory.ts +33 -1
  70. package/typechain-types/factories/contracts/UBI/UBIPool__factory.ts +24 -1
  71. package/typechain-types/factories/contracts/utils/Recover__factory.ts +172 -0
  72. package/typechain-types/factories/contracts/utils/index.ts +1 -0
  73. package/typechain-types/hardhat.d.ts +9 -0
  74. package/typechain-types/index.ts +2 -0
@@ -0,0 +1,150 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
5
+ import type { Provider, TransactionRequest } from "@ethersproject/providers";
6
+ import type { PromiseOrValue } from "../../../../common";
7
+ import type {
8
+ MultiClaimModule,
9
+ MultiClaimModuleInterface,
10
+ } from "../../../../contracts/UBI/MultiClaimModule.sol/MultiClaimModule";
11
+
12
+ const _abi = [
13
+ {
14
+ inputs: [],
15
+ name: "getModuleTypes",
16
+ outputs: [
17
+ {
18
+ internalType: "uint256",
19
+ name: "",
20
+ type: "uint256",
21
+ },
22
+ ],
23
+ stateMutability: "view",
24
+ type: "function",
25
+ },
26
+ {
27
+ inputs: [
28
+ {
29
+ internalType: "uint256",
30
+ name: "typeID",
31
+ type: "uint256",
32
+ },
33
+ ],
34
+ name: "isModuleType",
35
+ outputs: [
36
+ {
37
+ internalType: "bool",
38
+ name: "",
39
+ type: "bool",
40
+ },
41
+ ],
42
+ stateMutability: "view",
43
+ type: "function",
44
+ },
45
+ {
46
+ inputs: [
47
+ {
48
+ internalType: "address[]",
49
+ name: "contracts",
50
+ type: "address[]",
51
+ },
52
+ {
53
+ internalType: "contract IERC20Upgradeable",
54
+ name: "token",
55
+ type: "address",
56
+ },
57
+ {
58
+ internalType: "address",
59
+ name: "recipient",
60
+ type: "address",
61
+ },
62
+ ],
63
+ name: "multiClaim",
64
+ outputs: [
65
+ {
66
+ internalType: "bool[]",
67
+ name: "success",
68
+ type: "bool[]",
69
+ },
70
+ ],
71
+ stateMutability: "nonpayable",
72
+ type: "function",
73
+ },
74
+ {
75
+ inputs: [
76
+ {
77
+ internalType: "bytes",
78
+ name: "data",
79
+ type: "bytes",
80
+ },
81
+ ],
82
+ name: "onInstall",
83
+ outputs: [],
84
+ stateMutability: "nonpayable",
85
+ type: "function",
86
+ },
87
+ {
88
+ inputs: [
89
+ {
90
+ internalType: "bytes",
91
+ name: "data",
92
+ type: "bytes",
93
+ },
94
+ ],
95
+ name: "onUninstall",
96
+ outputs: [],
97
+ stateMutability: "nonpayable",
98
+ type: "function",
99
+ },
100
+ ] as const;
101
+
102
+ const _bytecode =
103
+ "0x608060405234801561001057600080fd5b506105d9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80630db1055e1461005c5780636d61fe70146100855780638a91b0e314610085578063d6cc1aa414610099578063ecd05961146100a8575b600080fd5b61006f61006a366004610356565b6100cc565b60405161007c91906103ec565b60405180910390f35b610097610093366004610432565b5050565b005b6040516002815260200161007c565b6100bc6100b63660046104a3565b50600190565b604051901515815260200161007c565b60606000836001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016100fc91906104bc565b602060405180830381865afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013d91906104d0565b9050846001600160401b03811115610157576101576104e9565b604051908082528060200260200182016040528015610180578160200160208202803683370190505b50915060005b8581101561023c578686828181106101a0576101a06104ff565b90506020020160208101906101b59190610515565b6001600160a01b0316634e71d92d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101ef57600080fd5b505af1925050508015610200575060015b1561022a576001838281518110610219576102196104ff565b911515602092830291909101909101525b806102348161054f565b915050610186565b50600081856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161026c91906104bc565b602060405180830381865afa158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad91906104d0565b6102b79190610568565b905080156103345760405163a9059cbb60e01b81526001600160a01b0385811660048301526024820183905286169063a9059cbb906044016020604051808303816000875af115801561030e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103329190610581565b505b5050949350505050565b6001600160a01b038116811461035357600080fd5b50565b6000806000806060858703121561036c57600080fd5b84356001600160401b038082111561038357600080fd5b818701915087601f83011261039757600080fd5b8135818111156103a657600080fd5b8860208260051b85010111156103bb57600080fd5b602092830196509450508501356103d18161033e565b915060408501356103e18161033e565b939692955090935050565b6020808252825182820181905260009190848201906040850190845b81811015610426578351151583529284019291840191600101610408565b50909695505050505050565b6000806020838503121561044557600080fd5b82356001600160401b038082111561045c57600080fd5b818501915085601f83011261047057600080fd5b81358181111561047f57600080fd5b86602082850101111561049157600080fd5b60209290920196919550909350505050565b6000602082840312156104b557600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000602082840312156104e257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561052757600080fd5b81356105328161033e565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60006001820161056157610561610539565b5060010190565b8181038181111561057b5761057b610539565b92915050565b60006020828403121561059357600080fd5b8151801515811461053257600080fdfea2646970667358221220437015d73db0f805829cc2f1b4cf5a6a7c4bc8b44f640d0f9f6c29c784430b3c64736f6c63430008130033";
104
+
105
+ type MultiClaimModuleConstructorParams =
106
+ | [signer?: Signer]
107
+ | ConstructorParameters<typeof ContractFactory>;
108
+
109
+ const isSuperArgs = (
110
+ xs: MultiClaimModuleConstructorParams
111
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
112
+
113
+ export class MultiClaimModule__factory extends ContractFactory {
114
+ constructor(...args: MultiClaimModuleConstructorParams) {
115
+ if (isSuperArgs(args)) {
116
+ super(...args);
117
+ } else {
118
+ super(_abi, _bytecode, args[0]);
119
+ }
120
+ }
121
+
122
+ override deploy(
123
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
124
+ ): Promise<MultiClaimModule> {
125
+ return super.deploy(overrides || {}) as Promise<MultiClaimModule>;
126
+ }
127
+ override getDeployTransaction(
128
+ overrides?: Overrides & { from?: PromiseOrValue<string> }
129
+ ): TransactionRequest {
130
+ return super.getDeployTransaction(overrides || {});
131
+ }
132
+ override attach(address: string): MultiClaimModule {
133
+ return super.attach(address) as MultiClaimModule;
134
+ }
135
+ override connect(signer: Signer): MultiClaimModule__factory {
136
+ return super.connect(signer) as MultiClaimModule__factory;
137
+ }
138
+
139
+ static readonly bytecode = _bytecode;
140
+ static readonly abi = _abi;
141
+ static createInterface(): MultiClaimModuleInterface {
142
+ return new utils.Interface(_abi) as MultiClaimModuleInterface;
143
+ }
144
+ static connect(
145
+ address: string,
146
+ signerOrProvider: Signer | Provider
147
+ ): MultiClaimModule {
148
+ return new Contract(address, _abi, signerOrProvider) as MultiClaimModule;
149
+ }
150
+ }
@@ -0,0 +1,6 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ export { IClaimable__factory } from "./IClaimable__factory";
5
+ export { IModule__factory } from "./IModule__factory";
6
+ export { MultiClaimModule__factory } from "./MultiClaimModule__factory";
@@ -70,6 +70,25 @@ const _abi = [
70
70
  name: "Initialized",
71
71
  type: "event",
72
72
  },
73
+ {
74
+ anonymous: false,
75
+ inputs: [
76
+ {
77
+ indexed: true,
78
+ internalType: "address",
79
+ name: "member",
80
+ type: "address",
81
+ },
82
+ {
83
+ indexed: true,
84
+ internalType: "address",
85
+ name: "pool",
86
+ type: "address",
87
+ },
88
+ ],
89
+ name: "MemberAdded",
90
+ type: "event",
91
+ },
73
92
  {
74
93
  anonymous: false,
75
94
  inputs: [
@@ -331,6 +350,19 @@ const _abi = [
331
350
  stateMutability: "nonpayable",
332
351
  type: "function",
333
352
  },
353
+ {
354
+ inputs: [
355
+ {
356
+ internalType: "address[]",
357
+ name: "members",
358
+ type: "address[]",
359
+ },
360
+ ],
361
+ name: "addMembers",
362
+ outputs: [],
363
+ stateMutability: "nonpayable",
364
+ type: "function",
365
+ },
334
366
  {
335
367
  inputs: [
336
368
  {
@@ -981,7 +1013,7 @@ const _abi = [
981
1013
  ] as const;
982
1014
 
983
1015
  const _bytecode =
984
- "0x60a06040523060805234801561001457600080fd5b50608051613e8361004c60003960008181610991015281816109d401528181610ba901528181610bec0152610dd60152613e836000f3fe608060405260043610620001585760003560e01c806301ffc9a7146200015d578063038defd714620001975780630b1ca49a14620001cd578063248a9ca314620001f457806324a9d85314620002285780632f2ff15d146200026457806336568abe14620002895780633659cfe614620002ae5780634507464614620002d35780634690484014620003075780634f1ef28614620003295780634f962c8c146200034057806352d1902d146200036557806357b70767146200037d5780638abf607714620003a25780638e819e5414620003c457806391d1485414620003e95780639cedd89b146200040e5780639cf5c6131462000448578063a217fddf146200046d578063ac4afa381462000484578063aec133d214620004a9578063ca6d56dc14620004ce578063d547741f14620004f3578063e9e50b041462000518578063fadd65c3146200053d578063fcf1e0091462000571575b600080fd5b3480156200016a57600080fd5b50620001826200017c366004620021c0565b62000596565b60405190151581526020015b60405180910390f35b348015620001a457600080fd5b50620001bc620001b636600462002202565b620005ce565b6040516200018e9392919062002276565b348015620001da57600080fd5b50620001f2620001ec36600462002202565b62000719565b005b3480156200020157600080fd5b506200021962000213366004620022b1565b620008c9565b6040519081526020016200018e565b3480156200023557600080fd5b5060fe546200024e90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016200018e565b3480156200027157600080fd5b50620001f262000283366004620022cb565b620008de565b3480156200029657600080fd5b50620001f2620002a8366004620022cb565b62000905565b348015620002bb57600080fd5b50620001f2620002cd36600462002202565b62000987565b348015620002e057600080fd5b50620002f8620002f236600462002536565b62000a5b565b6040516200018e91906200263e565b3480156200031457600080fd5b5060fe54620002f8906001600160a01b031681565b620001f26200033a36600462002652565b62000b9f565b3480156200034d57600080fd5b50620001f26200035f366004620026bc565b62000c60565b3480156200037257600080fd5b506200021962000dc9565b3480156200038a57600080fd5b50620002f86200039c36600462002707565b62000e7a565b348015620003af57600080fd5b5060fb54620002f8906001600160a01b031681565b348015620003d157600080fd5b50620001f2620003e336600462002736565b62000eb3565b348015620003f657600080fd5b506200018262000408366004620022cb565b62001059565b3480156200041b57600080fd5b50620002f86200042d366004620022b1565b60fd602052600090815260409020546001600160a01b031681565b3480156200045557600080fd5b50620001f26200046736600462002799565b62001084565b3480156200047a57600080fd5b5062000219600081565b3480156200049157600080fd5b50620002f8620004a3366004620022b1565b620010ed565b348015620004b657600080fd5b50620002f8620004c836600462002536565b62001119565b348015620004db57600080fd5b50620001f2620004ed36600462002202565b62001251565b3480156200050057600080fd5b50620001f262000512366004620022cb565b620012cc565b3480156200052557600080fd5b50620001f262000537366004620027cc565b620012ee565b3480156200054a57600080fd5b50620005626200055c36600462002202565b6200133b565b6040516200018e919062002806565b3480156200057e57600080fd5b50620001f26200059036600462002202565b620013b3565b60006001600160e01b03198216637965db0b60e01b1480620005c857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60fc60205260009081526040902080548190620005eb9062002855565b80601f0160208091040260200160405190810160405280929190818152602001828054620006199062002855565b80156200066a5780601f106200063e576101008083540402835291602001916200066a565b820191906000526020600020905b8154815290600101906020018083116200064c57829003601f168201915b5050506001840154600285018054949560ff909216949193509150620006909062002855565b80601f0160208091040260200160405190810160405280929190818152602001828054620006be9062002855565b80156200070f5780601f10620006e3576101008083540402835291602001916200070f565b820191906000526020600020905b815481529060010190602001808311620006f157829003601f168201915b5050505050905083565b33600090815260fc602052604090206002018054620007389062002855565b90506000036200075b57604051630cc15fbb60e11b815260040160405180910390fd5b60005b6001600160a01b038216600090815260ff6020526040902054811015620008c5576001600160a01b038216600090815260ff60205260409020805433919083908110620007af57620007af62002891565b6000918252602090912001546001600160a01b031603620008b0576001600160a01b038216600090815260ff602052604090208054620007f290600190620028bd565b8154811062000805576200080562002891565b60009182526020808320909101546001600160a01b03858116845260ff909252604090922080549190921691908390811062000845576200084562002891565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918416815260ff909152604090208054806200088d576200088d620028d3565b600082815260209020810160001990810180546001600160a01b03191690550190555b80620008bc81620028e9565b9150506200075e565b5050565b60009081526065602052604090206001015490565b620008e982620008c9565b620008f4816200145e565b6200090083836200146a565b505050565b6001600160a01b03811633146200097b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620008c58282620014f4565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620009d25760405162461bcd60e51b8152600401620009729062002905565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000a066200155e565b6001600160a01b03161462000a2f5760405162461bcd60e51b8152600401620009729062002940565b62000a3a816200157b565b6040805160008082526020820190925262000a589183919062001588565b50565b8451602080870191909120600090815260fd909152604081205486906001600160a01b0316801562000b8257806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ad5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000afb91906200297b565b336040518363ffffffff1660e01b815260040162000b1b92919062002995565b602060405180830381865afa15801562000b39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b5f9190620029ac565b151560000362000b8257604051631d799a6d60e21b815260040160405180910390fd5b62000b938888888888600162001700565b98975050505050505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000bea5760405162461bcd60e51b8152600401620009729062002905565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000c1e6200155e565b6001600160a01b03161462000c475760405162461bcd60e51b8152600401620009729062002940565b62000c52826200157b565b620008c58282600162001588565b81806001600160a01b03166391d14854826001600160a01b031663ec87621c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000caf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd591906200297b565b336040518363ffffffff1660e01b815260040162000cf592919062002995565b602060405180830381865afa15801562000d13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d399190620029ac565b151560000362000d5c57604051631d799a6d60e21b815260040160405180910390fd5b6001600160a01b038316600090815260fc6020526040902062000d80838262002a1e565b50826001600160a01b03167f941ad6ac0538b96f9e89b9b52ec11031b50591baa2f16c0cdf1f94c69f389d6d8360405162000dbc919062002aea565b60405180910390a2505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000e665760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840162000972565b5060008051602062003e0783398151915290565b60ff602052816000526040600020818154811062000e9757600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801562000ed45750600054600160ff909116105b8062000ef9575062000ee63062001cf1565b15801562000ef9575060005460ff166001145b62000f5e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000972565b6000805460ff19166001179055801562000f82576000805461ff0019166101001790555b8360405162000f919062002196565b62000f9d91906200263e565b604051809103906000f08015801562000fba573d6000803e3d6000fd5b5060fb80546001600160a01b0319166001600160a01b0392831617905560fe80549185166001600160c01b031990921691909117600160a01b63ffffffff8516021790556200100b60008662001d00565b801562001052576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600062001091816200145e565b6001600160a01b038316600081815260fc6020908152604091829020600101805460ff191686151590811790915591519182527fafdc942e2e075abc791516f168aed9293862095eb31c0dab19c8d0d061018a93910162000dbc565b6101008181548110620010ff57600080fd5b6000918252602090912001546001600160a01b0316905081565b8451602080870191909120600090815260fd909152604081205486906001600160a01b031680156200124057806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001193573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011b991906200297b565b336040518363ffffffff1660e01b8152600401620011d992919062002995565b602060405180830381865afa158015620011f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200121d9190620029ac565b15156000036200124057604051631d799a6d60e21b815260040160405180910390fd5b62000b938888888888600062001700565b33600090815260fc602052604090206002018054620012709062002855565b90506000036200129357604051630cc15fbb60e11b815260040160405180910390fd5b6001600160a01b0316600090815260ff602090815260408220805460018101825590835291200180546001600160a01b03191633179055565b620012d782620008c9565b620012e2816200145e565b620009008383620014f4565b6000620012fb816200145e565b5060fe80546001600160a01b039093166001600160a01b031963ffffffff909316600160a01b02929092166001600160c01b031990931692909217179055565b6001600160a01b038116600090815260ff6020908152604091829020805483518184028101840190945280845260609392830182828015620013a757602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001388575b50505050509050919050565b6000620013c0816200145e565b60fb54604051631b2ce7f360e11b81526001600160a01b0390911690633659cfe690620013f29085906004016200263e565b600060405180830381600087803b1580156200140d57600080fd5b505af115801562001422573d6000803e3d6000fd5b50506040516001600160a01b03851692507f71ce7583e9b7e543de8a69a6af369c0b3528b287064f9dce26a38025e36dc2c79150600090a25050565b62000a58813362001d0c565b62001476828262001059565b620008c55760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620014b03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b62001500828262001059565b15620008c55760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602062003e07833981519152546001600160a01b031690565b6000620008c5816200145e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620015be57620009008362001d70565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200161b575060408051601f3d908101601f1916820190925262001618918101906200297b565b60015b620016805760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000972565b60008051602062003e078339815191528114620016f25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000972565b506200090083838362001e0f565b600080858585306040516024016200171c949392919062002b88565b60408051601f198184030181529190526020810180516001600160e01b031663235b53a160e11b17905290508215620017a15760fb546040516001600160a01b039091169082906200176e90620021a4565b6200177b92919062002beb565b604051809103906000f08015801562001798573d6000803e3d6000fd5b50915062001858565b60fb60009054906101000a90046001600160a01b03166001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620017f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200181b919062002c19565b816040516200182a90620021b2565b6200183792919062002beb565b604051809103906000f08015801562001854573d6000803e3d6000fd5b5091505b816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001897573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018bd919062002c19565b6001600160a01b0316633ca3ad4e836040518263ffffffff1660e01b8152600401620018ea91906200263e565b602060405180830381865afa15801562001908573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200192e9190620029ac565b151560000362001ac957816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199d919062002c19565b6001600160a01b031663c60944a68360016040518363ffffffff1660e01b8152600401620019cd92919062002c39565b600060405180830381600087803b158015620019e857600080fd5b505af1925050508015620019fa575060015b62001ac957816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a64919062002c19565b6001600160a01b031663f37330528360016040518363ffffffff1660e01b815260040162001a9492919062002c39565b600060405180830381600087803b15801562001aaf57600080fd5b505af115801562001ac4573d6000803e3d6000fd5b505050505b87516020808a0191909120600090815260fd90915260409020546001600160a01b031662001b245787516020808a0191909120600090815260fd9091526040902080546001600160a01b0319166001600160a01b0384161790555b6001600160a01b038216600090815260fc6020526040902062001b48888262002a1e565b506001600160a01b038216600090815260fc6020526040902060020162001b70898262002a1e565b50604051632f2ff15d60e01b81526001600160a01b03831690632f2ff15d9062001ba290600090339060040162002995565b600060405180830381600087803b15801562001bbd57600080fd5b505af115801562001bd2573d6000803e3d6000fd5b5050604051631b2b455f60e11b81526001600160a01b03851692506336568abe915062001c0790600090309060040162002995565b600060405180830381600087803b15801562001c2257600080fd5b505af115801562001c37573d6000803e3d6000fd5b505061010080546001810182556000919091527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b0180546001600160a01b0319166001600160a01b038616179055505060405162001c9790899062002c52565b6040518091039020826001600160a01b03167f2d89f584379c0b23270129f3ee10b4bfdd48e940725c460ee90c3b42b610644089898960405162001cde9392919062002c70565b60405180910390a3509695505050505050565b6001600160a01b03163b151590565b620008c582826200146a565b62001d18828262001059565b620008c55762001d288162001e40565b62001d3583602062001e53565b60405160200162001d4892919062002ca7565b60408051601f198184030181529082905262461bcd60e51b8252620009729160040162002aea565b62001d7b8162001cf1565b62001ddf5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000972565b60008051602062003e0783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62001e1a8362002013565b60008251118062001e285750805b15620009005762001e3a838362002055565b50505050565b6060620005c86001600160a01b03831660145b6060600062001e6483600262002d1a565b62001e7190600262002d34565b6001600160401b0381111562001e8b5762001e8b620022fe565b6040519080825280601f01601f19166020018201604052801562001eb6576020820181803683370190505b509050600360fc1b8160008151811062001ed45762001ed462002891565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062001f065762001f0662002891565b60200101906001600160f81b031916908160001a905350600062001f2c84600262002d1a565b62001f3990600162002d34565b90505b600181111562001fbb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001f715762001f7162002891565b1a60f81b82828151811062001f8a5762001f8a62002891565b60200101906001600160f81b031916908160001a90535060049490941c9362001fb38162002d4a565b905062001f3c565b5083156200200c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000972565b9392505050565b6200201e8162001d70565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620020628362001cf1565b620020bf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000972565b600080846001600160a01b031684604051620020dc919062002c52565b600060405180830381855af49150503d806000811462002119576040519150601f19603f3d011682016040523d82523d6000602084013e6200211e565b606091505b509150915062002149828260405180606001604052806027815260200162003e276027913962002152565b95945050505050565b60608315620021635750816200200c565b6200200c83838151156200217a5781518083602001fd5b8060405162461bcd60e51b815260040162000972919062002aea565b6104c98062002d6583390190565b6106cd806200322e83390190565b6104ec80620038fb83390190565b600060208284031215620021d357600080fd5b81356001600160e01b0319811681146200200c57600080fd5b6001600160a01b038116811462000a5857600080fd5b6000602082840312156200221557600080fd5b81356200200c81620021ec565b60005b838110156200223f57818101518382015260200162002225565b50506000910152565b600081518084526200226281602086016020860162002222565b601f01601f19169290920160200192915050565b6060815260006200228b606083018662002248565b84151560208401528281036040840152620022a7818562002248565b9695505050505050565b600060208284031215620022c457600080fd5b5035919050565b60008060408385031215620022df57600080fd5b823591506020830135620022f381620021ec565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620023395762002339620022fe565b60405290565b60006001600160401b03808411156200235c576200235c620022fe565b604051601f8501601f19908116603f01168101908282118183101715620023875762002387620022fe565b81604052809350858152868686011115620023a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112620023cd57600080fd5b6200200c838335602085016200233f565b803563ffffffff81168114620023f357600080fd5b919050565b801515811462000a5857600080fd5b600060e082840312156200241a57600080fd5b60405160e081016001600160401b03811182821017156200243f576200243f620022fe565b6040529050806200245083620023de565b81526200246060208401620023de565b60208201526200247360408401620023de565b604082015260608301356200248881620023f8565b606082015260808381013590820152620024a560a08401620023de565b60a082015260c0830135620024ba81620023f8565b60c0919091015292915050565b600060608284031215620024da57600080fd5b604051606081016001600160401b0381118282101715620024ff57620024ff620022fe565b6040529050806200251083620023de565b8152602083013560208201526200252a60408401620023de565b60408201525092915050565b60008060008060008587036102008112156200255157600080fd5b86356001600160401b03808211156200256957600080fd5b620025778a838b01620023bb565b975060208901359150808211156200258e57600080fd5b506200259d89828a01620023bb565b9550506080603f1982011215620025b357600080fd5b50620025be62002314565b6040870135620025ce81620021ec565b81526060870135620025e081620021ec565b60208201526080870135620025f581620021ec565b604082015260a08701356200260a81620021ec565b60608201529250620026208760c0880162002407565b915062002632876101a08801620024c7565b90509295509295909350565b6001600160a01b0391909116815260200190565b600080604083850312156200266657600080fd5b82356200267381620021ec565b915060208301356001600160401b038111156200268f57600080fd5b8301601f81018513620026a157600080fd5b620026b2858235602084016200233f565b9150509250929050565b60008060408385031215620026d057600080fd5b8235620026dd81620021ec565b915060208301356001600160401b03811115620026f957600080fd5b620026b285828601620023bb565b600080604083850312156200271b57600080fd5b82356200272881620021ec565b946020939093013593505050565b600080600080608085870312156200274d57600080fd5b84356200275a81620021ec565b935060208501356200276c81620021ec565b925060408501356200277e81620021ec565b91506200278e60608601620023de565b905092959194509250565b60008060408385031215620027ad57600080fd5b8235620027ba81620021ec565b91506020830135620022f381620023f8565b60008060408385031215620027e057600080fd5b8235620027ed81620021ec565b9150620027fd60208401620023de565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620028495783516001600160a01b03168352928401929184019160010162002822565b50909695505050505050565b600181811c908216806200286a57607f821691505b6020821081036200288b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115620005c857620005c8620028a7565b634e487b7160e01b600052603160045260246000fd5b600060018201620028fe57620028fe620028a7565b5060010190565b6020808252602c9082015260008051602062003de783398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602062003de783398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200298e57600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b600060208284031215620029bf57600080fd5b81516200200c81620023f8565b601f8211156200090057600081815260208120601f850160051c81016020861015620029f55750805b601f850160051c820191505b8181101562002a165782815560010162002a01565b505050505050565b81516001600160401b0381111562002a3a5762002a3a620022fe565b62002a528162002a4b845462002855565b84620029cc565b602080601f83116001811462002a8a576000841562002a715750858301515b600019600386901b1c1916600185901b17855562002a16565b600085815260208120601f198616915b8281101562002abb5788860151825594840194600190910190840162002a9a565b508582101562002ada5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260006200200c602083018462002248565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b63ffffffff808251168352806020830151166020840152806040830151166040840152606082015115156060840152608082015160808401528060a08301511660a08401525060c0810151151560c08301525050565b6101e0810162002b99828762002aff565b62002ba8608083018662002b32565b835163ffffffff90811661016084015260208501516101808401526040909401519093166101a08201526001600160a01b03919091166101c09091015292915050565b6001600160a01b038316815260406020820181905260009062002c119083018462002248565b949350505050565b60006020828403121562002c2c57600080fd5b81516200200c81620021ec565b6001600160a01b03929092168252602082015260400190565b6000825162002c6681846020870162002222565b9190910192915050565b600061018080835262002c868184018762002248565b91505062002c98602083018562002aff565b62002c1160a083018462002b32565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835162002cdb81601785016020880162002222565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162002d0e81602884016020880162002222565b01602801949350505050565b8082028115828204841417620005c857620005c8620028a7565b80820180821115620005c857620005c8620028a7565b60008162002d5c5762002d5c620028a7565b50600019019056fe608060405234801561001057600080fd5b506040516104c93803806104c983398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610350806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100aa575b600080fd5b61006f61006a3660046102ea565b6100bd565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610105565b61007e610119565b61006f6100b83660046102ea565b610128565b6100c56101a6565b6100ce81610205565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61010d6101a6565b610117600061029a565b565b6000546001600160a01b031690565b6101306101a6565b6001600160a01b03811661019a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6101a38161029a565b50565b336101af610119565b6001600160a01b0316146101175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610191565b6001600160a01b0381163b6102785760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610191565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fc57600080fd5b81356001600160a01b038116811461031357600080fd5b939250505056fea264697066735822122038970e7cf09dc887c70d5260fa612ed542a4b7fc825586d54bcad83fc1ebdd9164736f6c6343000813003360806040526040516106cd3803806106cd83398101604081905261002291610421565b61002e82826000610035565b505061054b565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e1565b8361026e565b505b505050565b6100ff8161029a565b61015e5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101c8816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c391906104e1565b61029a565b61022d5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610155565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029383836040518060600160405280602781526020016106a6602791396102a9565b9392505050565b6001600160a01b03163b151590565b6060600080856001600160a01b0316856040516102c691906104fc565b600060405180830381855af49150503d8060008114610301576040519150601f19603f3d011682016040523d82523d6000602084013e610306565b606091505b50909250905061031886838387610322565b9695505050505050565b6060831561038f5782516000036103885761033c8561029a565b6103885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610155565b5081610399565b61039983836103a1565b949350505050565b8151156103b15781518083602001fd5b8060405162461bcd60e51b81526004016101559190610518565b80516001600160a01b03811681146103e257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610418578181015183820152602001610400565b50506000910152565b6000806040838503121561043457600080fd5b61043d836103cb565b60208401519092506001600160401b038082111561045a57600080fd5b818501915085601f83011261046e57600080fd5b815181811115610480576104806103e7565b604051601f8201601f19908116603f011681019083821181831017156104a8576104a86103e7565b816040528281528860208487010111156104c157600080fd5b6104d28360208301602088016103fd565b80955050505050509250929050565b6000602082840312156104f357600080fd5b610293826103cb565b6000825161050e8184602087016103fd565b9190910192915050565b60208152600082518060208401526105378160408501602087016103fd565b601f01601f19169190910160400192915050565b61014c8061055a6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea26469706673582212207b4f4f4bd905b812712d76801c617b8aa3f4c3f8d6d9e59a18563606189dd4e564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040526040516104ec3803806104ec833981016040819052610022916102e9565b61002e82826000610035565b5050610406565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c56027913961017e565b9392505050565b6100d6816101f7565b61013d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019b91906103b7565b600060405180830381855af49150503d80600081146101d6576040519150601f19603f3d011682016040523d82523d6000602084013e6101db565b606091505b5090925090506101ed86838387610206565b9695505050505050565b6001600160a01b03163b151590565b6060831561027357825160000361026c57610220856101f7565b61026c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610134565b508161027d565b61027d8383610285565b949350505050565b8151156102955781518083602001fd5b8060405162461bcd60e51b815260040161013491906103d3565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102e05781810151838201526020016102c8565b50506000910152565b600080604083850312156102fc57600080fd5b82516001600160a01b038116811461031357600080fd5b60208401519092506001600160401b038082111561033057600080fd5b818501915085601f83011261034457600080fd5b815181811115610356576103566102af565b604051601f8201601f19908116603f0116810190838211818310171561037e5761037e6102af565b8160405282815288602084870101111561039757600080fd5b6103a88360208301602088016102c5565b80955050505050509250929050565b600082516103c98184602087016102c5565b9190910192915050565b60208152600082518060208401526103f28160408501602087016102c5565b601f01601f19169190910160400192915050565b60b1806104146000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea2646970667358221220a4cda07e5b291f61d81b4ee016ef5ca6a806aa56384b08ff8d52828dbed4d68d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cb1e8375f897bb8946295b6460be856eb014398525f1f754b6a54b407164c5f264736f6c63430008130033";
1016
+ "0x60a06040523060805234801561001457600080fd5b50608051613ffc61004c600039600081816109c201528181610a0501528181610bda01528181610c1d0152610e070152613ffc6000f3fe608060405260043610620001645760003560e01c806301ffc9a71462000169578063038defd714620001a35780630b1ca49a14620001d9578063248a9ca3146200020057806324a9d85314620002345780632f2ff15d146200027057806336568abe14620002955780633659cfe614620002ba5780634507464614620002df5780634690484014620003135780634f1ef28614620003355780634f962c8c146200034c57806352d1902d146200037157806357b7076714620003895780636f4d469b14620003ae5780638abf607714620003d35780638e819e5414620003f557806391d14854146200041a5780639cedd89b146200043f5780639cf5c6131462000479578063a217fddf146200049e578063ac4afa3814620004b5578063aec133d214620004da578063ca6d56dc14620004ff578063d547741f1462000524578063e9e50b041462000549578063fadd65c3146200056e578063fcf1e00914620005a2575b600080fd5b3480156200017657600080fd5b506200018e62000188366004620022c0565b620005c7565b60405190151581526020015b60405180910390f35b348015620001b057600080fd5b50620001c8620001c236600462002302565b620005ff565b6040516200019a9392919062002376565b348015620001e657600080fd5b50620001fe620001f836600462002302565b6200074a565b005b3480156200020d57600080fd5b50620002256200021f366004620023b1565b620008fa565b6040519081526020016200019a565b3480156200024157600080fd5b5060fe546200025a90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016200019a565b3480156200027d57600080fd5b50620001fe6200028f366004620023cb565b6200090f565b348015620002a257600080fd5b50620001fe620002b4366004620023cb565b62000936565b348015620002c757600080fd5b50620001fe620002d936600462002302565b620009b8565b348015620002ec57600080fd5b5062000304620002fe36600462002636565b62000a8c565b6040516200019a91906200273e565b3480156200032057600080fd5b5060fe5462000304906001600160a01b031681565b620001fe6200034636600462002752565b62000bd0565b3480156200035957600080fd5b50620001fe6200036b366004620027bc565b62000c91565b3480156200037e57600080fd5b506200022562000dfa565b3480156200039657600080fd5b5062000304620003a836600462002807565b62000eab565b348015620003bb57600080fd5b50620001fe620003cd36600462002836565b62000ee4565b348015620003e057600080fd5b5060fb5462000304906001600160a01b031681565b3480156200040257600080fd5b50620001fe62000414366004620028af565b62000f77565b3480156200042757600080fd5b506200018e62000439366004620023cb565b6200111d565b3480156200044c57600080fd5b50620003046200045e366004620023b1565b60fd602052600090815260409020546001600160a01b031681565b3480156200048657600080fd5b50620001fe6200049836600462002912565b62001148565b348015620004ab57600080fd5b5062000225600081565b348015620004c257600080fd5b5062000304620004d4366004620023b1565b620011b1565b348015620004e757600080fd5b5062000304620004f936600462002636565b620011dd565b3480156200050c57600080fd5b50620001fe6200051e36600462002302565b62001315565b3480156200053157600080fd5b50620001fe62000543366004620023cb565b62001362565b3480156200055657600080fd5b50620001fe6200056836600462002945565b62001384565b3480156200057b57600080fd5b50620005936200058d36600462002302565b620013d1565b6040516200019a91906200297f565b348015620005af57600080fd5b50620001fe620005c136600462002302565b62001449565b60006001600160e01b03198216637965db0b60e01b1480620005f957506301ffc9a760e01b6001600160e01b03198316145b92915050565b60fc602052600090815260409020805481906200061c90620029ce565b80601f01602080910402602001604051908101604052809291908181526020018280546200064a90620029ce565b80156200069b5780601f106200066f576101008083540402835291602001916200069b565b820191906000526020600020905b8154815290600101906020018083116200067d57829003601f168201915b5050506001840154600285018054949560ff909216949193509150620006c190620029ce565b80601f0160208091040260200160405190810160405280929190818152602001828054620006ef90620029ce565b8015620007405780601f10620007145761010080835404028352916020019162000740565b820191906000526020600020905b8154815290600101906020018083116200072257829003601f168201915b5050505050905083565b33600090815260fc6020526040902060020180546200076990620029ce565b90506000036200078c57604051630cc15fbb60e11b815260040160405180910390fd5b60005b6001600160a01b038216600090815260ff6020526040902054811015620008f6576001600160a01b038216600090815260ff60205260409020805433919083908110620007e057620007e062002a0a565b6000918252602090912001546001600160a01b031603620008e1576001600160a01b038216600090815260ff602052604090208054620008239060019062002a36565b8154811062000836576200083662002a0a565b60009182526020808320909101546001600160a01b03858116845260ff909252604090922080549190921691908390811062000876576200087662002a0a565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918416815260ff90915260409020805480620008be57620008be62002a4c565b600082815260209020810160001990810180546001600160a01b03191690550190555b80620008ed8162002a62565b9150506200078f565b5050565b60009081526065602052604090206001015490565b6200091a82620008fa565b6200092581620014f4565b62000931838362001500565b505050565b6001600160a01b0381163314620009ac5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620008f682826200158a565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000a035760405162461bcd60e51b8152600401620009a39062002a7e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000a37620015f4565b6001600160a01b03161462000a605760405162461bcd60e51b8152600401620009a39062002ab9565b62000a6b8162001611565b6040805160008082526020820190925262000a89918391906200161e565b50565b8451602080870191909120600090815260fd909152604081205486906001600160a01b0316801562000bb357806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b06573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b2c919062002af4565b336040518363ffffffff1660e01b815260040162000b4c92919062002b0e565b602060405180830381865afa15801562000b6a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b90919062002b25565b151560000362000bb357604051631d799a6d60e21b815260040160405180910390fd5b62000bc48888888888600162001796565b98975050505050505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000c1b5760405162461bcd60e51b8152600401620009a39062002a7e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000c4f620015f4565b6001600160a01b03161462000c785760405162461bcd60e51b8152600401620009a39062002ab9565b62000c838262001611565b620008f6828260016200161e565b81806001600160a01b03166391d14854826001600160a01b031663ec87621c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ce0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d06919062002af4565b336040518363ffffffff1660e01b815260040162000d2692919062002b0e565b602060405180830381865afa15801562000d44573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d6a919062002b25565b151560000362000d8d57604051631d799a6d60e21b815260040160405180910390fd5b6001600160a01b038316600090815260fc6020526040902062000db1838262002b97565b50826001600160a01b03167f941ad6ac0538b96f9e89b9b52ec11031b50591baa2f16c0cdf1f94c69f389d6d8360405162000ded919062002c63565b60405180910390a2505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000e975760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401620009a3565b5060008051602062003f8083398151915290565b60ff602052816000526040600020818154811062000ec857600080fd5b6000918252602090912001546001600160a01b03169150829050565b33600090815260fc60205260409020600201805462000f0390620029ce565b905060000362000f2657604051630cc15fbb60e11b815260040160405180910390fd5b60005b81811015620009315762000f6283838381811062000f4b5762000f4b62002a0a565b90506020020160208101906200051e919062002302565b8062000f6e8162002a62565b91505062000f29565b600054610100900460ff161580801562000f985750600054600160ff909116105b8062000fbd575062000faa3062001d87565b15801562000fbd575060005460ff166001145b620010225760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620009a3565b6000805460ff19166001179055801562001046576000805461ff0019166101001790555b83604051620010559062002296565b6200106191906200273e565b604051809103906000f0801580156200107e573d6000803e3d6000fd5b5060fb80546001600160a01b0319166001600160a01b0392831617905560fe80549185166001600160c01b031990921691909117600160a01b63ffffffff851602179055620010cf60008662001d96565b801562001116576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200115581620014f4565b6001600160a01b038316600081815260fc6020908152604091829020600101805460ff191686151590811790915591519182527fafdc942e2e075abc791516f168aed9293862095eb31c0dab19c8d0d061018a93910162000ded565b6101008181548110620011c357600080fd5b6000918252602090912001546001600160a01b0316905081565b8451602080870191909120600090815260fd909152604081205486906001600160a01b031680156200130457806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001257573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200127d919062002af4565b336040518363ffffffff1660e01b81526004016200129d92919062002b0e565b602060405180830381865afa158015620012bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012e1919062002b25565b15156000036200130457604051631d799a6d60e21b815260040160405180910390fd5b62000bc48888888888600062001796565b33600090815260fc6020526040902060020180546200133490620029ce565b90506000036200135757604051630cc15fbb60e11b815260040160405180910390fd5b62000a898162001da2565b6200136d82620008fa565b6200137881620014f4565b6200093183836200158a565b60006200139181620014f4565b5060fe80546001600160a01b039093166001600160a01b031963ffffffff909316600160a01b02929092166001600160c01b031990931692909217179055565b6001600160a01b038116600090815260ff60209081526040918290208054835181840281018401909452808452606093928301828280156200143d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116200141e575b50505050509050919050565b60006200145681620014f4565b60fb54604051631b2ce7f360e11b81526001600160a01b0390911690633659cfe690620014889085906004016200273e565b600060405180830381600087803b158015620014a357600080fd5b505af1158015620014b8573d6000803e3d6000fd5b50506040516001600160a01b03851692507f71ce7583e9b7e543de8a69a6af369c0b3528b287064f9dce26a38025e36dc2c79150600090a25050565b62000a89813362001e0c565b6200150c82826200111d565b620008f65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620015463390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6200159682826200111d565b15620008f65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602062003f80833981519152546001600160a01b031690565b6000620008f681620014f4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156200165457620009318362001e70565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620016b1575060408051601f3d908101601f19168201909252620016ae9181019062002af4565b60015b620017165760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401620009a3565b60008051602062003f808339815191528114620017885760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401620009a3565b506200093183838362001f0f565b60008085858530604051602401620017b2949392919062002d01565b60408051601f198184030181529190526020810180516001600160e01b031663235b53a160e11b17905290508215620018375760fb546040516001600160a01b039091169082906200180490620022a4565b6200181192919062002d64565b604051809103906000f0801580156200182e573d6000803e3d6000fd5b509150620018ee565b60fb60009054906101000a90046001600160a01b03166001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200188b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018b1919062002d92565b81604051620018c090620022b2565b620018cd92919062002d64565b604051809103906000f080158015620018ea573d6000803e3d6000fd5b5091505b816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200192d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001953919062002d92565b6001600160a01b0316633ca3ad4e836040518263ffffffff1660e01b81526004016200198091906200273e565b602060405180830381865afa1580156200199e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620019c4919062002b25565b151560000362001b5f57816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a33919062002d92565b6001600160a01b031663c60944a68360016040518363ffffffff1660e01b815260040162001a6392919062002db2565b600060405180830381600087803b15801562001a7e57600080fd5b505af192505050801562001a90575060015b62001b5f57816001600160a01b031663f437bc596040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001ad4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001afa919062002d92565b6001600160a01b031663f37330528360016040518363ffffffff1660e01b815260040162001b2a92919062002db2565b600060405180830381600087803b15801562001b4557600080fd5b505af115801562001b5a573d6000803e3d6000fd5b505050505b87516020808a0191909120600090815260fd90915260409020546001600160a01b031662001bba5787516020808a0191909120600090815260fd9091526040902080546001600160a01b0319166001600160a01b0384161790555b6001600160a01b038216600090815260fc6020526040902062001bde888262002b97565b506001600160a01b038216600090815260fc6020526040902060020162001c06898262002b97565b50604051632f2ff15d60e01b81526001600160a01b03831690632f2ff15d9062001c3890600090339060040162002b0e565b600060405180830381600087803b15801562001c5357600080fd5b505af115801562001c68573d6000803e3d6000fd5b5050604051631b2b455f60e11b81526001600160a01b03851692506336568abe915062001c9d90600090309060040162002b0e565b600060405180830381600087803b15801562001cb857600080fd5b505af115801562001ccd573d6000803e3d6000fd5b505061010080546001810182556000919091527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b0180546001600160a01b0319166001600160a01b038616179055505060405162001d2d90899062002dcb565b6040518091039020826001600160a01b03167f2d89f584379c0b23270129f3ee10b4bfdd48e940725c460ee90c3b42b610644089898960405162001d749392919062002de9565b60405180910390a3509695505050505050565b6001600160a01b03163b151590565b620008f6828262001500565b6001600160a01b038116600081815260ff60209081526040808320805460018101825590845291832090910180546001600160a01b0319163390811790915590519092917f6a2af11b2d73f347f9d5840aea46899e17609730b5cd91bd9c312098038acba691a350565b62001e1882826200111d565b620008f65762001e288162001f40565b62001e3583602062001f53565b60405160200162001e4892919062002e20565b60408051601f198184030181529082905262461bcd60e51b8252620009a39160040162002c63565b62001e7b8162001d87565b62001edf5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620009a3565b60008051602062003f8083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62001f1a8362002113565b60008251118062001f285750805b15620009315762001f3a838362002155565b50505050565b6060620005f96001600160a01b03831660145b6060600062001f6483600262002e93565b62001f7190600262002ead565b6001600160401b0381111562001f8b5762001f8b620023fe565b6040519080825280601f01601f19166020018201604052801562001fb6576020820181803683370190505b509050600360fc1b8160008151811062001fd45762001fd462002a0a565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062002006576200200662002a0a565b60200101906001600160f81b031916908160001a90535060006200202c84600262002e93565b6200203990600162002ead565b90505b6001811115620020bb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062002071576200207162002a0a565b1a60f81b8282815181106200208a576200208a62002a0a565b60200101906001600160f81b031916908160001a90535060049490941c93620020b38162002ec3565b90506200203c565b5083156200210c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620009a3565b9392505050565b6200211e8162001e70565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620021628362001d87565b620021bf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620009a3565b600080846001600160a01b031684604051620021dc919062002dcb565b600060405180830381855af49150503d806000811462002219576040519150601f19603f3d011682016040523d82523d6000602084013e6200221e565b606091505b509150915062002249828260405180606001604052806027815260200162003fa06027913962002252565b95945050505050565b60608315620022635750816200210c565b6200210c83838151156200227a5781518083602001fd5b8060405162461bcd60e51b8152600401620009a3919062002c63565b6104c98062002ede83390190565b6106cd80620033a783390190565b6104ec8062003a7483390190565b600060208284031215620022d357600080fd5b81356001600160e01b0319811681146200210c57600080fd5b6001600160a01b038116811462000a8957600080fd5b6000602082840312156200231557600080fd5b81356200210c81620022ec565b60005b838110156200233f57818101518382015260200162002325565b50506000910152565b600081518084526200236281602086016020860162002322565b601f01601f19169290920160200192915050565b6060815260006200238b606083018662002348565b84151560208401528281036040840152620023a7818562002348565b9695505050505050565b600060208284031215620023c457600080fd5b5035919050565b60008060408385031215620023df57600080fd5b823591506020830135620023f381620022ec565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620024395762002439620023fe565b60405290565b60006001600160401b03808411156200245c576200245c620023fe565b604051601f8501601f19908116603f01168101908282118183101715620024875762002487620023fe565b81604052809350858152868686011115620024a157600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112620024cd57600080fd5b6200210c838335602085016200243f565b803563ffffffff81168114620024f357600080fd5b919050565b801515811462000a8957600080fd5b600060e082840312156200251a57600080fd5b60405160e081016001600160401b03811182821017156200253f576200253f620023fe565b6040529050806200255083620024de565b81526200256060208401620024de565b60208201526200257360408401620024de565b604082015260608301356200258881620024f8565b606082015260808381013590820152620025a560a08401620024de565b60a082015260c0830135620025ba81620024f8565b60c0919091015292915050565b600060608284031215620025da57600080fd5b604051606081016001600160401b0381118282101715620025ff57620025ff620023fe565b6040529050806200261083620024de565b8152602083013560208201526200262a60408401620024de565b60408201525092915050565b60008060008060008587036102008112156200265157600080fd5b86356001600160401b03808211156200266957600080fd5b620026778a838b01620024bb565b975060208901359150808211156200268e57600080fd5b506200269d89828a01620024bb565b9550506080603f1982011215620026b357600080fd5b50620026be62002414565b6040870135620026ce81620022ec565b81526060870135620026e081620022ec565b60208201526080870135620026f581620022ec565b604082015260a08701356200270a81620022ec565b60608201529250620027208760c0880162002507565b915062002732876101a08801620025c7565b90509295509295909350565b6001600160a01b0391909116815260200190565b600080604083850312156200276657600080fd5b82356200277381620022ec565b915060208301356001600160401b038111156200278f57600080fd5b8301601f81018513620027a157600080fd5b620027b2858235602084016200243f565b9150509250929050565b60008060408385031215620027d057600080fd5b8235620027dd81620022ec565b915060208301356001600160401b03811115620027f957600080fd5b620027b285828601620024bb565b600080604083850312156200281b57600080fd5b82356200282881620022ec565b946020939093013593505050565b600080602083850312156200284a57600080fd5b82356001600160401b03808211156200286257600080fd5b818501915085601f8301126200287757600080fd5b8135818111156200288757600080fd5b8660208260051b85010111156200289d57600080fd5b60209290920196919550909350505050565b60008060008060808587031215620028c657600080fd5b8435620028d381620022ec565b93506020850135620028e581620022ec565b92506040850135620028f781620022ec565b91506200290760608601620024de565b905092959194509250565b600080604083850312156200292657600080fd5b82356200293381620022ec565b91506020830135620023f381620024f8565b600080604083850312156200295957600080fd5b82356200296681620022ec565b91506200297660208401620024de565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620029c25783516001600160a01b0316835292840192918401916001016200299b565b50909695505050505050565b600181811c90821680620029e357607f821691505b60208210810362002a0457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115620005f957620005f962002a20565b634e487b7160e01b600052603160045260246000fd5b60006001820162002a775762002a7762002a20565b5060010190565b6020808252602c9082015260008051602062003f6083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602062003f6083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121562002b0757600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b60006020828403121562002b3857600080fd5b81516200210c81620024f8565b601f8211156200093157600081815260208120601f850160051c8101602086101562002b6e5750805b601f850160051c820191505b8181101562002b8f5782815560010162002b7a565b505050505050565b81516001600160401b0381111562002bb35762002bb3620023fe565b62002bcb8162002bc48454620029ce565b8462002b45565b602080601f83116001811462002c03576000841562002bea5750858301515b600019600386901b1c1916600185901b17855562002b8f565b600085815260208120601f198616915b8281101562002c345788860151825594840194600190910190840162002c13565b508582101562002c535787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260006200210c602083018462002348565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b63ffffffff808251168352806020830151166020840152806040830151166040840152606082015115156060840152608082015160808401528060a08301511660a08401525060c0810151151560c08301525050565b6101e0810162002d12828762002c78565b62002d21608083018662002cab565b835163ffffffff90811661016084015260208501516101808401526040909401519093166101a08201526001600160a01b03919091166101c09091015292915050565b6001600160a01b038316815260406020820181905260009062002d8a9083018462002348565b949350505050565b60006020828403121562002da557600080fd5b81516200210c81620022ec565b6001600160a01b03929092168252602082015260400190565b6000825162002ddf81846020870162002322565b9190910192915050565b600061018080835262002dff8184018762002348565b91505062002e11602083018562002c78565b62002d8a60a083018462002cab565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835162002e5481601785016020880162002322565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162002e8781602884016020880162002322565b01602801949350505050565b8082028115828204841417620005f957620005f962002a20565b80820180821115620005f957620005f962002a20565b60008162002ed55762002ed562002a20565b50600019019056fe608060405234801561001057600080fd5b506040516104c93803806104c983398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610350806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100aa575b600080fd5b61006f61006a3660046102ea565b6100bd565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610105565b61007e610119565b61006f6100b83660046102ea565b610128565b6100c56101a6565b6100ce81610205565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61010d6101a6565b610117600061029a565b565b6000546001600160a01b031690565b6101306101a6565b6001600160a01b03811661019a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6101a38161029a565b50565b336101af610119565b6001600160a01b0316146101175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610191565b6001600160a01b0381163b6102785760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610191565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fc57600080fd5b81356001600160a01b038116811461031357600080fd5b939250505056fea264697066735822122038970e7cf09dc887c70d5260fa612ed542a4b7fc825586d54bcad83fc1ebdd9164736f6c6343000813003360806040526040516106cd3803806106cd83398101604081905261002291610421565b61002e82826000610035565b505061054b565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e1565b8361026e565b505b505050565b6100ff8161029a565b61015e5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101c8816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c391906104e1565b61029a565b61022d5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610155565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029383836040518060600160405280602781526020016106a6602791396102a9565b9392505050565b6001600160a01b03163b151590565b6060600080856001600160a01b0316856040516102c691906104fc565b600060405180830381855af49150503d8060008114610301576040519150601f19603f3d011682016040523d82523d6000602084013e610306565b606091505b50909250905061031886838387610322565b9695505050505050565b6060831561038f5782516000036103885761033c8561029a565b6103885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610155565b5081610399565b61039983836103a1565b949350505050565b8151156103b15781518083602001fd5b8060405162461bcd60e51b81526004016101559190610518565b80516001600160a01b03811681146103e257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610418578181015183820152602001610400565b50506000910152565b6000806040838503121561043457600080fd5b61043d836103cb565b60208401519092506001600160401b038082111561045a57600080fd5b818501915085601f83011261046e57600080fd5b815181811115610480576104806103e7565b604051601f8201601f19908116603f011681019083821181831017156104a8576104a86103e7565b816040528281528860208487010111156104c157600080fd5b6104d28360208301602088016103fd565b80955050505050509250929050565b6000602082840312156104f357600080fd5b610293826103cb565b6000825161050e8184602087016103fd565b9190910192915050565b60208152600082518060208401526105378160408501602087016103fd565b601f01601f19169190910160400192915050565b61014c8061055a6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea26469706673582212207b4f4f4bd905b812712d76801c617b8aa3f4c3f8d6d9e59a18563606189dd4e564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040526040516104ec3803806104ec833981016040819052610022916102e9565b61002e82826000610035565b5050610406565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c56027913961017e565b9392505050565b6100d6816101f7565b61013d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019b91906103b7565b600060405180830381855af49150503d80600081146101d6576040519150601f19603f3d011682016040523d82523d6000602084013e6101db565b606091505b5090925090506101ed86838387610206565b9695505050505050565b6001600160a01b03163b151590565b6060831561027357825160000361026c57610220856101f7565b61026c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610134565b508161027d565b61027d8383610285565b949350505050565b8151156102955781518083602001fd5b8060405162461bcd60e51b815260040161013491906103d3565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102e05781810151838201526020016102c8565b50506000910152565b600080604083850312156102fc57600080fd5b82516001600160a01b038116811461031357600080fd5b60208401519092506001600160401b038082111561033057600080fd5b818501915085601f83011261034457600080fd5b815181811115610356576103566102af565b604051601f8201601f19908116603f0116810190838211818310171561037e5761037e6102af565b8160405282815288602084870101111561039757600080fd5b6103a88360208301602088016102c5565b80955050505050509250929050565b600082516103c98184602087016102c5565b9190910192915050565b60208152600082518060208401526103f28160408501602087016102c5565b601f01601f19169190910160400192915050565b60b1806104146000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea2646970667358221220a4cda07e5b291f61d81b4ee016ef5ca6a806aa56384b08ff8d52828dbed4d68d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f73aa8b3d1214c738706e92fb99b9033b4bbeb6f09c2638144fdee36eb34aa8364736f6c63430008130033";
985
1017
 
986
1018
  type UBIPoolFactoryConstructorParams =
987
1019
  | [signer?: Signer]
@@ -65,6 +65,11 @@ const _abi = [
65
65
  name: "INVALID_0_VALUE",
66
66
  type: "error",
67
67
  },
68
+ {
69
+ inputs: [],
70
+ name: "LENGTH_MISMATCH",
71
+ type: "error",
72
+ },
68
73
  {
69
74
  inputs: [],
70
75
  name: "MAX_MEMBERS_REACHED",
@@ -609,6 +614,24 @@ const _abi = [
609
614
  stateMutability: "nonpayable",
610
615
  type: "function",
611
616
  },
617
+ {
618
+ inputs: [
619
+ {
620
+ internalType: "address[]",
621
+ name: "members",
622
+ type: "address[]",
623
+ },
624
+ {
625
+ internalType: "bytes[]",
626
+ name: "extraData",
627
+ type: "bytes[]",
628
+ },
629
+ ],
630
+ name: "addMembers",
631
+ outputs: [],
632
+ stateMutability: "nonpayable",
633
+ type: "function",
634
+ },
612
635
  {
613
636
  inputs: [
614
637
  {
@@ -1988,7 +2011,7 @@ const _abi = [
1988
2011
  ] as const;
1989
2012
 
1990
2013
  const _bytecode =
1991
- "0x60e06040523060c0523480156200001557600080fd5b506040516200588038038062005880833981016040819052620000389162000098565b6001600160a01b038216608081905282908290620000695760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b031660a05250620000d7915050565b6001600160a01b03811681146200009557600080fd5b50565b60008060408385031215620000ac57600080fd5b8251620000b9816200007f565b6020840151909250620000cc816200007f565b809150509250929050565b60805160a05160c0516157026200017e6000396000818161113101528181611171015281816114c90152818161150901526115810152600081816109a501528181610ead015261249d015260008181610bf301528181610e2f01528181610ff70152818161162f01528181611a8301528181611fac015281816120f4015281816123b301528181612b0601528181612e4201528181612ed90152612f4301526157026000f3fe6080604052600436106102865760003560e01c806301ffc9a71461028b5780630b1ca49a146102c05780630c710776146102e25780630ce82d671461030e5780630e0cc1b91461033157806319805538146103515780631a2a84b31461038a5780631a787f2e146103aa5780631db128c7146103ca578063200d2ed2146103f7578063230dbd2914610479578063248a9ca314610499578063298052df146104b95780632b4116f7146104ce5780632f2ff15d146104fb57806330d9c9151461051b57806336568abe1461053b5780633659cfe61461055b5780633e6968b61461057b57806346b6a742146105905780634e71d92d146105b05780634f1ef286146105c557806352d1902d146105d857806353c11f99146105ed578063586097541461060d578063598f8fbf1461062d5780635a4c51521461064d5780635ab1bd53146106e45780635da93292146106f95780635f9e7d771461070e5780636180c7931461072e578063647c75e21461074e57806372ca8a3e146107bf57806373b2e80e146107df578063791ea89b146107ff5780637b1039991461081f57806388480f0c14610840578063884d1f401461089257806391d14854146108b257806398d6621b146108d25780639f8fddd2146108e7578063a10f469e14610907578063a217fddf14610929578063a4c0ed361461093e578063ae8272001461095e578063bcb4546f14610971578063c31c9c0714610993578063c7713870146109c7578063d3112b2e146109dc578063d547741f14610a11578063d80528ae14610a31578063d86ed3e514610ac2578063dc61d5c214610ae2578063def482a414610b35578063e06174e414610b55578063ec87621c14610bbf578063f437bc5914610be1575b600080fd5b34801561029757600080fd5b506102ab6102a6366004614649565b610c15565b60405190151581526020015b60405180910390f35b3480156102cc57600080fd5b506102e06102db366004614688565b610c4c565b005b3480156102ee57600080fd5b506102fb6459df64940081565b604051600b9190910b81526020016102b7565b34801561031a57600080fd5b50610323610c80565b6040519081526020016102b7565b34801561033d57600080fd5b506102e061034c3660046146c3565b610c9e565b34801561035d57600080fd5b50610366610cd3565b604080516001600160a01b03909316835263ffffffff9091166020830152016102b7565b34801561039657600080fd5b506103236103a5366004614688565b610cf2565b3480156103b657600080fd5b506103236103c5366004614688565b610d92565b3480156103d657600080fd5b506103ea6103e5366004614864565b610e0d565b6040516102b7919061492b565b34801561040357600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f546101405461014254610438979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e0820152610100016102b7565b34801561048557600080fd5b506103ea610494366004614986565b610f2e565b3480156104a557600080fd5b506103236104b4366004614a50565b610f75565b3480156104c557600080fd5b50610323610f8a565b3480156104da57600080fd5b506097546104ee906001600160a01b031681565b6040516102b79190614a69565b34801561050757600080fd5b506102e0610516366004614a7d565b610fc9565b34801561052757600080fd5b506103ea610536366004614aa2565b610fea565b34801561054757600080fd5b506102e0610556366004614a7d565b6110ad565b34801561056757600080fd5b506102e0610576366004614688565b611127565b34801561058757600080fd5b506103236111ef565b34801561059c57600080fd5b506102e06105ab366004614d04565b61120b565b3480156105bc57600080fd5b506102e06114b2565b6102e06105d3366004614d60565b6114bf565b3480156105e457600080fd5b50610323611574565b3480156105f957600080fd5b506103ea610608366004614986565b611622565b34801561061957600080fd5b506102e0610628366004614daf565b6116ff565b34801561063957600080fd5b506102e0610648366004614ddb565b611779565b34801561065957600080fd5b5061013754610138546101395461069f9263ffffffff80821693600160201b808404831694600160401b850484169460ff600160601b9091048116948216929091041687565b6040805163ffffffff98891681529688166020880152948716948601949094529115156060850152608084015290921660a082015290151560c082015260e0016102b7565b3480156106f057600080fd5b506104ee6118ae565b34801561070557600080fd5b506103236118be565b34801561071a57600080fd5b506103ea610729366004614aa2565b611a76565b34801561073a57600080fd5b506102ab610749366004614d60565b611b5b565b34801561075a57600080fd5b50610798610769366004614688565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b0316908201526060016102b7565b3480156107cb57600080fd5b506102ab6107da366004614688565b611d58565b3480156107eb57600080fd5b506102ab6107fa366004614688565b611d6c565b34801561080b57600080fd5b506102e061081a366004614df7565b611e0f565b34801561082b57600080fd5b50610143546104ee906001600160a01b031681565b34801561084c57600080fd5b5061014454610145546101465461086b9263ffffffff90811692911683565b6040805163ffffffff948516815260208101939093529216918101919091526060016102b7565b34801561089e57600080fd5b506103ea6108ad366004614aa2565b611f9f565b3480156108be57600080fd5b506102ab6108cd366004614a7d565b61209c565b3480156108de57600080fd5b506103236120c7565b3480156108f357600080fd5b506103ea610902366004614e2d565b6120d2565b34801561091357600080fd5b506103236000805160206156ad83398151915281565b34801561093557600080fd5b50610323600081565b34801561094a57600080fd5b506102ab610959366004614e7b565b61218c565b6102e061096c366004614ed6565b612205565b34801561097d57600080fd5b5061032360008051602061560683398151915281565b34801561099f57600080fd5b506104ee7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109d357600080fd5b5061032361228b565b3480156109e857600080fd5b50609954609a54610a03916001600160a01b03908116911682565b6040516102b7929190614f0a565b348015610a1d57600080fd5b506102e0610a2c366004614a7d565b61229c565b348015610a3d57600080fd5b50609b54609c54609d54609e54609f5460a05460a154610a78969594936001600160a01b0380821694600160a01b909204600b0b9391169188565b604080519889526020890197909752958701949094526001600160a01b039283166060870152600b9190910b60808601521660a084015260c083015260e0820152610100016102b7565b348015610ace57600080fd5b506103ea610add366004614986565b6122b8565b348015610aee57600080fd5b50610af76122e6565b604080519788526020880196909652948601939093526060850191909152600b90810b608085015290810b60a08401520b60c082015260e0016102b7565b348015610b4157600080fd5b506103ea610b50366004614f24565b612391565b348015610b6157600080fd5b5061013354610134546101355461013654610b8c936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016102b7565b348015610bcb57600080fd5b5061032360008051602061566683398151915281565b348015610bed57600080fd5b506104ee7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610c4657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020615666833981519152610c64816125e4565b610c7c6000805160206156ad833981519152836125ee565b5050565b61013d54600090610c8f6111ef565b610c999190614f98565b905090565b61013754600160601b900460ff16610cc9576040516369973f2560e11b815260040160405180910390fd5b610c7c82826126ce565b61013354610146546001600160a01b039091169163ffffffff90911690565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610d4f575192915050565b6040810151610d67906001600160801b031642614f98565b81602001516001600160601b0316610d7f9190614fab565b8151610d8b9190614fc2565b9392505050565b6000610d9c6111ef565b61013a54148015610daf575061013b5415155b15610e05576101445463ffffffff1615801590610dda57506101445461013f5463ffffffff90911611155b15610de757506000919050565b610df082611d6c565b610dfd5761013b54610c46565b600092915050565b610c4661228b565b606082336001600160a01b03821614801590610e525750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610e7b573360405163087231bf60e31b8152600401610e729190614a69565b60405180910390fd5b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610ee3917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a9060040161501a565b602060405180830381865af4158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190615055565b5091949350505050565b60606000610f3e8789018961506e565b509050600080610f50878901896150ab565b91509150610f628d8484848a8a612973565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b61013754600090600160201b900463ffffffff16610fa66111ef565b610fb09190614fc2565b610fbd9062015180614fab565b610c999061a8c0614fc2565b610fd282610f75565b610fdb816125e4565b610fe583836129ba565b505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461103557604051632f2d36a760e01b815260040160405180910390fd5b61103e87612ae0565b6110615750604080518082019091526002815261060f60f31b60208201526110a2565b61106a88611d58565b61108757604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b038116331461111d5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e72565b610c7c82826125ee565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361116f5760405162461bcd60e51b8152600401610e72906150c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111a1612b94565b6001600160a01b0316146111c75760405162461bcd60e51b8152600401610e7290615103565b6111d081612bb0565b604080516000808252602082019092526111ec91839190612bbb565b50565b60006201518061120161a8c042614f98565b610c99919061513d565b600054610100900460ff161580801561122b5750600054600160ff909116105b8061124c575061123a30612d26565b15801561124c575060005460ff166001145b6112af5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e72565b6000805460ff1916600117905580156112d2576000805461ff0019166101001790555b61014380546001600160a01b03199081166001600160a01b038581169190911790925586516101338054831691841691909117905560208088015161013480548416918516919091179055604080890151610135805485169186169190911790556060808a0151610136805490951695169490941790925586516101378054898401518a860151968b015163ffffffff9485166001600160401b031990931692909217600160201b91851682021764ffffffffff60401b1916600160401b9785169790970260ff60601b191696909617600160601b9115159190910217905560808801516101385560a0880151610139805460c08b015192841664ffffffffff1990911617911515909502179093558551610144805463ffffffff199081169286169290921790559086015161014555908501516101468054909216921691909117905561141f85612d35565b61142884612d8b565b611433600033612de2565b61144f6000805160206156668339815191528660000151612de2565b61013654611465906001600160a01b0316612dec565b80156114ab576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6114bd3360016126ce565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115075760405162461bcd60e51b8152600401610e72906150c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611539612b94565b6001600160a01b03161461155f5760405162461bcd60e51b8152600401610e7290615103565b61156882612bb0565b610c7c82826001612bbb565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461160f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610e72565b5060008051602061564683398151915290565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611662575061166089612ae0565b155b8061167357506116718a611d58565b155b156116b75782828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610f6892505050565b6000806116c6888a018a61506e565b90925090506000806116da888a018a61515f565b915091506116ed8e858584868c8c61301d565b9e9d5050505050505050505050505050565b6097546040516332d4cd0360e11b815273__$0d78a42341742155da77b97d7f993534c7$__916365a99a0691611745916001600160a01b03169086908690600401615184565b60006040518083038186803b15801561175d57600080fd5b505af4158015611771573d6000803e3d6000fd5b505050505050565b600080516020615666833981519152611791816125e4565b61179a82612d35565b6101335482516001600160a01b039081169116146117f457610133546117d890600080516020615666833981519152906001600160a01b03166125ee565b6117f46000805160206156668339815191528360000151612de2565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a161790965582519687529251871693860193909352915185168483015291519093169082015290517fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d9159351916080908290030190a15050565b610143546001600160a01b031690565b6000806118c96111ef565b6101375461013a549192506118ec91600160201b90910463ffffffff1690614fc2565b8110611a6d5760008060006118ff613070565b92509250925080156119e857610136546040516370a0823160e01b81526000916001600160a01b0316906370a082319061193d903090600401614a69565b602060405180830381865afa15801561195a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197e9190615055565b61013c8590556101375463ffffffff1661013e81905561013d879055604080518881526020810184905290810191909152606081018690529091507f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a1505b61013a84905561013b829055610145548211611a0557600061013b555b61013b5461013f5461014054604080518881526020810194909452438482015260608401929092526080830152517fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89181900360a00190a15050600061013f81905561014055505b505061013b5490565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611ab65750611ab487612ae0565b155b80611ac75750611ac588611d58565b155b15611aeb5750604080518082019091526002815261060f60f31b60208201526110a2565b600080611afa8688018861506e565b9092509050600080611b166001600160a01b038d168585613222565b5050915091508181604051602001611b3b929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b610135546000906001600160a01b031615611c1057610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690611ba2908790600401614a69565b602060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be391906151a8565b90506001600160a01b038116611c0e5783604051630b7b234960e01b8152600401610e729190614a69565b505b610134546001600160a01b031615801590611c405750611c3e6000805160206156668339815191523361209c565b155b15611ce857610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa90611c7c9030903390889088906004016151c5565b6020604051808303816000875af1158015611c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbf9190615203565b1515600003611ce3578260405163130f4a3760e11b8152600401610e729190614a69565b611d37565b61013954600160201b900460ff168015611d175750611d156000805160206156668339815191523361209c565b155b15611d375782604051636f6acad560e01b8152600401610e729190614a69565b611d4f6000805160206156ad833981519152846129ba565b50600192915050565b6097546001600160a01b0390811691161490565b610135546040516316874da360e11b815260009182916001600160a01b0390911690632d0e9b4690611da2908690600401614a69565b602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de391906151a8565b9050611ded6111ef565b6001600160a01b03909116600090815261014160205260409020541492915050565b600080516020615666833981519152611e27816125e4565b611e3083612d8b565b8251610137805460208087015160408089015160608a01511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b9081026001600160401b0319909816998416999099179690961793909316949094179190911790935560808701516101385560a0870151610139805460c08a0151151590960264ffffffffff1990961691841691909117949094179093558451610144805491831663ffffffff19928316179055928501516101455584820151610146805491909216931692909217909155517f9c2d0f3e240667c2b704104ff988af37be9eb4befb81fe00424626b088ee757990611f92908590600060e08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525060c0830151151560c083015292915050565b60405180910390a1505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611fea57604051632f2d36a760e01b815260040160405180910390fd5b611ff387612ae0565b6120165750604080518082019091526002815261060f60f31b60208201526110a2565b61201f88611d58565b61203c57604051631ea25bab60e31b815260040160405180910390fd5b600061204a8587018761506e565b5090506000806120646001600160a01b038c168430613222565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610c9933610d92565b606083336001600160a01b038216148015906121175750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15612137573360405163087231bf60e31b8152600401610e729190614a69565b8360000361215857604051630f6fa54560e41b815260040160405180910390fd5b609754612170906001600160a01b03168630876132ba565b610f2485856000604051806020016040528060008152506133c0565b6097546000906001600160a01b031633146121ba57604051630ce706f760e41b815260040160405180910390fd5b836000036121db57604051630f6fa54560e41b815260040160405180910390fd5b6121f785856000604051806020016040528060008152506133c0565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015612250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227491906151a8565b905061227f81612bb0565b610c7c81836000612bbb565b6000612295613070565b5092915050565b6122a582610f75565b6122ae816125e4565b610fe583836125ee565b606060006122c88789018961506e565b5090506122d78b828686613a68565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b815260009182918291829182918291829173__$0d78a42341742155da77b97d7f993534c7$__9163b2f918a19161233a91609b916001600160a01b031690600401615220565b60e060405180830381865af4158015612357573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237b91906152aa565b959d949c50929a50909850965094509092509050565b606083336001600160a01b038216148015906123d65750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b156123f6573360405163087231bf60e31b8152600401610e729190614a69565b6097546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612427903090600401614a69565b602060405180830381865afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190615055565b6097546040516321437a5360e01b815291925073__$0d78a42341742155da77b97d7f993534c7$__916321437a53916124d7917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b03909116908c90309060040161531e565b602060405180830381865af41580156124f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125189190615055565b506097546040516370a0823160e01b815260009183916001600160a01b03909116906370a082319061254e903090600401614a69565b602060405180830381865afa15801561256b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258f9190615055565b6125999190614f98565b9050806000036125bc57604051630f6fa54560e41b815260040160405180910390fd5b6125d887826000604051806020016040528060008152506133c0565b50939695505050505050565b6111ec8133613ab6565b6000805160206156ad8339815191528214801561261e575061261e6000805160206156ad8339815191528261209c565b156126c45761014280546001919060009061264090849063ffffffff1661535f565b825463ffffffff9182166101009390930a9283029190920219909116179055506101435460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a90612691908490600401614a69565b600060405180830381600087803b1580156126ab57600080fd5b505af11580156126bf573d6000803e3d6000fd5b505050505b610c7c8282613b0f565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690612700908690600401614a69565b602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274191906151a8565b90506001600160a01b03811661276c5782604051630b7b234960e01b8152600401610e729190614a69565b6101395463ffffffff161580159061278f575061013954600160201b900460ff16155b156127ac576127ac6000805160206156ad833981519152846129ba565b6101395463ffffffff161515806127cd575061013954600160201b900460ff165b80156127ee57506127ec6000805160206156ad8339815191528461209c565b155b1561280e578260405163130f4a3760e11b8152600401610e729190614a69565b6101445463ffffffff161580159061283457506101445461013f5463ffffffff90911611155b1561285a5761013f54604051635136bc3160e01b81526004810191909152602401610e72565b60006128646118be565b61013a546001600160a01b0384166000908152610141602052604090205491925090036128a65781604051631fc1cabf60e31b8152600401610e729190614a69565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f8054600192906128db908490614fc2565b909155505061014080548291906000906128f6908490614fc2565b9091555061292090508361290a578461290c565b825b610136546001600160a01b03169083613b76565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d8360405161296591815260200190565b60405180910390a350505050565b60606110a28686600b0b8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133c092505050565b6000805160206156ad833981519152821480156129ec57506129ea6000805160206156ad8339815191528261209c565b155b15612ad6576101395463ffffffff1615801590612a185750610139546101425463ffffffff9182169116115b15612a3657604051632263c94160e01b815260040160405180910390fd5b6101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc90612a67908490600401614a69565b600060405180830381600087803b158015612a8157600080fd5b505af1158015612a95573d6000803e3d6000fd5b5050610142805460019350909150600090612ab790849063ffffffff1661537c565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610c7c8282613bcc565b604051635b69006f60e11b815260008051602061560683398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa158015612b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7991906151a8565b6001600160a01b0316826001600160a01b0316149050919050565b600080516020615646833981519152546001600160a01b031690565b6000610c7c816125e4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612bee57610fe583613c52565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612c48575060408051601f3d908101601f19168201909252612c4591810190615055565b60015b612cab5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610e72565b6000805160206156468339815191528114612d1a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610e72565b50610fe5838383613cec565b6001600160a01b03163b151590565b80516001600160a01b03161580612d57575060408101516001600160a01b0316155b80612d6d575060608101516001600160a01b0316155b156111ec57604051631e597d8360e11b815260040160405180910390fd5b602081015163ffffffff161580612da75750805163ffffffff16155b80612dba5750604081015163ffffffff16155b80612d6d575060808101516111ec57604051631e597d8360e11b815260040160405180910390fd5b610c7c82826129ba565b6001600160a01b038116612e135760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383811691909117909155604051631e51d6a760e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690633ca3ad4e90612e79903090600401614a69565b602060405180830381865afa158015612e96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eba9190615203565b1515600003612f38576040516315a722b960e31b8152600160048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ad3915c890602401600060405180830381600087803b158015612f2557600080fd5b505af1925050508015612f36575060015b505b6040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b815260008051602061560683398151915260048201529091602083019163b6d200de90602401602060405180830381865afa158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf91906151a8565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a8054909316911617905550565b60606130648786600b0b8686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133c092505050565b98975050505050505050565b610136546040516370a0823160e01b81526000918291829182916001600160a01b03909116906370a08231906130aa903090600401614a69565b602060405180830381865afa1580156130c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130eb9190615055565b610137549091506000906131059063ffffffff168361513d565b90506000606461013a60020154606961311e9190614fab565b613128919061513d565b82118061316c575061013e5461313c610c80565b1115801561316c575061314d610c80565b61013e5461315b9190614f98565b61013c546131699190614fab565b83105b61013c5461013e54909750909150613182610c80565b61318d906001614fc2565b1015806131975750805b156131b757610137546131b09063ffffffff168461513d565b9550600193505b6101385461013f5461320791906131f890612710906131d890612904614fab565b6131e2919061513d565b61013754600160401b900463ffffffff16613d17565b613202908961513d565b613d2e565b6101455490955085101561321a57600094505b505050909192565b600080600080600061323388613d3d565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890613267908b908b908b90600401615399565b608060405180830381865afa158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a891906153bc565b929b919a509850909650945050505050565b600080856001600160a01b03166323b872dd60e01b8686866040516024016132e493929190615184565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161332291906153fa565b6000604051808303816000865af19150503d806000811461335f576040519150601f19603f3d011682016040523d82523d6000602084013e613364565b606091505b509150915081801561338e57508051158061338e57508080602001905181019061338e9190615203565b6117715760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610e72565b8051819015156000806133d1610cd3565b609754919350915073__$0d78a42341742155da77b97d7f993534c7$__9063934e2cce90609b906001600160a01b03166134096118ae565b8588613415578c613418565b60005b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b03938416602486015292909116604484015263ffffffff166064830152608482015260a40160006040518083038186803b15801561347857600080fd5b505af415801561348c573d6000803e3d6000fd5b5050609754600092506134aa91506001600160a01b03168a30613eac565b6001600160a01b038a16600090815260986020526040902054909150841561389f57600082600b0b1380156134e757506459df649400600b83900b125b1561350a57604051624963df60e91b8152600b83900b6004820152602401610e72565b6001600160a01b038a16600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b0385161790915561356c908990614f98565b613576908a614fab565b6001600160a01b038b166000908152609860205260408120805490919061359e908490614fc2565b90915550600090506135ae6118ae565b6001600160a01b031614613771576135c46118ae565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362591906151a8565b935061362f6118ae565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa15801561366c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136909190615416565b925073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60030160009054906101000a90046001600160a01b031688888f896136eb9190615433565b8d6040518863ffffffff1660e01b815260040161370e9796959493929190615460565b600060405180830381865af415801561372b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261375391908101906154b0565b609e80546001600160a01b0319166001600160a01b03871617905595505b613779610cd3565b809450819550505073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60040160009054906101000a90046001600160a01b031688888f896137da9190615433565b8d6040518863ffffffff1660e01b81526004016137fd9796959493929190615460565b600060405180830381865af415801561381a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261384291908101906154b0565b609f80546001600160a01b0319166001600160a01b0387811691909117909155609754919750613873911630613f3a565b609e80546001600160601b0392909216600160a01b026001600160a01b039092169190911790556139de565b60006138a96118ae565b6001600160a01b031614613998576138bf6118ae565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392091906151a8565b935061392a6118ae565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398b9190615416565b925061399884848b613fb9565b6139a0610cd3565b90945092506139b084848b613fb9565b6001600160a01b038a16600090815260986020526040812080548b92906139d8908490614fc2565b90915550505b6001600160a01b038a166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839088613a27576000613a29565b8c5b604080519384526020840192909252600b90810b8383015286900b60608301528815156080830152519081900360a00190a25050505050949350505050565b6060613aad8460008086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133c092505050565b95945050505050565b613ac0828261209c565b610c7c57613acd81614005565b613ad8836020614017565b604051602001613ae992919061551d565b60408051601f198184030181529082905262461bcd60e51b8252610e729160040161492b565b613b19828261209c565b15610c7c5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610fe58363a9059cbb60e01b8484604051602401613b9592919061558c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526141b2565b613bd6828261209c565b610c7c5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613c0e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613c5b81612d26565b613cbd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610e72565b60008051602061564683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613cf583614284565b600082511180613d025750805b15610fe557613d1183836142c4565b50505050565b600081831015613d275781610d8b565b5090919050565b6000818310613d275781610d8b565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b038116613e7b576001600160a01b038216613e0257826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dff91906151a8565b91505b604051635b69006f60e11b815260008051602061560683398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa158015613e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e7891906151a8565b90505b6001600160a01b038216613e9157613e916155a5565b6001600160a01b038116613ea757613ea76155a5565b915091565b600080613eb885613d3d565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890613eec90889088908890600401615399565b608060405180830381865afa158015613f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f2d91906153bc565b5090979650505050505050565b600080613f4684613d3d565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d190613f789087908790600401614f0a565b602060405180830381865afa158015613f95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd91906155bb565b6001600160a01b038316613fcc57505050565b6000612710613fe163ffffffff851684614fab565b613feb919061513d565b609754909150613d11906001600160a01b031685836143ad565b6060610c466001600160a01b03831660145b60606000614026836002614fab565b614031906002614fc2565b6001600160401b0381111561404857614048614709565b6040519080825280601f01601f191660200182016040528015614072576020820181803683370190505b509050600360fc1b8160008151811061408d5761408d6155d8565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106140bc576140bc6155d8565b60200101906001600160f81b031916908160001a90535060006140e0846002614fab565b6140eb906001614fc2565b90505b6001811115614163576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061411f5761411f6155d8565b1a60f81b828281518110614135576141356155d8565b60200101906001600160f81b031916908160001a90535060049490941c9361415c816155ee565b90506140ee565b508315610d8b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e72565b6000614207826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144b09092919063ffffffff16565b805190915015610fe557808060200190518101906142259190615203565b610fe55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e72565b61428d81613c52565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606142cf83612d26565b61432a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e72565b600080846001600160a01b03168460405161434591906153fa565b600060405180830381855af49150503d8060008114614380576040519150601f19603f3d011682016040523d82523d6000602084013e614385565b606091505b5091509150613aad8282604051806060016040528060278152602001615686602791396144bf565b600080846001600160a01b031663a9059cbb60e01b85856040516024016143d592919061558c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161441391906153fa565b6000604051808303816000865af19150503d8060008114614450576040519150601f19603f3d011682016040523d82523d6000602084013e614455565b606091505b509150915081801561447f57508051158061447f57508080602001905181019061447f9190615203565b6114ab5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610e72565b60606121fd84846000856144d8565b606083156144ce575081610d8b565b610d8b83836145a8565b6060824710156145395760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e72565b600080866001600160a01b0316858760405161455591906153fa565b60006040518083038185875af1925050503d8060008114614592576040519150601f19603f3d011682016040523d82523d6000602084013e614597565b606091505b50915091506110a2878383876145d2565b8151156145b85781518083602001fd5b8060405162461bcd60e51b8152600401610e72919061492b565b6060831561463f578251600003614638576145ec85612d26565b6146385760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e72565b50816121fd565b6121fd83836145a8565b60006020828403121561465b57600080fd5b81356001600160e01b031981168114610d8b57600080fd5b6001600160a01b03811681146111ec57600080fd5b60006020828403121561469a57600080fd5b8135610d8b81614673565b80151581146111ec57600080fd5b80356146be816146a5565b919050565b600080604083850312156146d657600080fd5b82356146e181614673565b915060208301356146f1816146a5565b809150509250929050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561474757614747614709565b604052919050565b60006001600160401b0382111561476857614768614709565b50601f01601f191660200190565b600082601f83011261478757600080fd5b813561479a6147958261474f565b61471f565b8181528460208386010111156147af57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a082840312156147de57600080fd5b60405160a081016001600160401b03808211838310171561480157614801614709565b816040528293508435915061481582614673565b818352602085013560208401526040850135604084015260608501356060840152608085013591508082111561484a57600080fd5b5061485785828601614776565b6080830152505092915050565b60008060006060848603121561487957600080fd5b83356001600160401b038082111561489057600080fd5b61489c878388016147cc565b9450602086013591506148ae82614673565b909250604085013590808211156148c457600080fd5b506148d186828701614776565b9150509250925092565b60005b838110156148f65781810151838201526020016148de565b50506000910152565b600081518084526149178160208601602086016148db565b601f01601f19169290920160200192915050565b602081526000610d8b60208301846148ff565b60008083601f84011261495057600080fd5b5081356001600160401b0381111561496757600080fd5b60208301915083602082850101111561497f57600080fd5b9250929050565b600080600080600080600080600060c08a8c0312156149a457600080fd5b89356149af81614673565b985060208a01356149bf81614673565b975060408a0135965060608a01356001600160401b03808211156149e257600080fd5b6149ee8d838e0161493e565b909850965060808c0135915080821115614a0757600080fd5b614a138d838e0161493e565b909650945060a08c0135915080821115614a2c57600080fd5b50614a398c828d0161493e565b915080935050809150509295985092959850929598565b600060208284031215614a6257600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060408385031215614a9057600080fd5b8235915060208301356146f181614673565b600080600080600080600060a0888a031215614abd57600080fd5b8735614ac881614673565b96506020880135614ad881614673565b95506040880135945060608801356001600160401b0380821115614afb57600080fd5b614b078b838c0161493e565b909650945060808a0135915080821115614b2057600080fd5b50614b2d8a828b0161493e565b989b979a50959850939692959293505050565b600060808284031215614b5257600080fd5b604051608081016001600160401b0381118282101715614b7457614b74614709565b6040529050808235614b8581614673565b81526020830135614b9581614673565b60208201526040830135614ba881614673565b60408201526060830135614bbb81614673565b6060919091015292915050565b63ffffffff811681146111ec57600080fd5b80356146be81614bc8565b600060e08284031215614bf757600080fd5b60405160e081016001600160401b0381118282101715614c1957614c19614709565b6040529050808235614c2a81614bc8565b81526020830135614c3a81614bc8565b60208201526040830135614c4d81614bc8565b60408201526060830135614c60816146a5565b606082015260808381013590820152614c7b60a08401614bda565b60a0820152614c8c60c084016146b3565b60c08201525092915050565b600060608284031215614caa57600080fd5b604051606081016001600160401b0381118282101715614ccc57614ccc614709565b6040529050808235614cdd81614bc8565b8152602083810135908201526040830135614cf781614bc8565b6040919091015292915050565b6000806000806101e08587031215614d1b57600080fd5b614d258686614b40565b9350614d348660808701614be5565b9250614d44866101608701614c98565b91506101c0850135614d5581614673565b939692955090935050565b60008060408385031215614d7357600080fd5b8235614d7e81614673565b915060208301356001600160401b03811115614d9957600080fd5b614da585828601614776565b9150509250929050565b60008060408385031215614dc257600080fd5b8235614dcd81614673565b946020939093013593505050565b600060808284031215614ded57600080fd5b610d8b8383614b40565b6000806101408385031215614e0b57600080fd5b614e158484614be5565b9150614e248460e08501614c98565b90509250929050565b600080600060608486031215614e4257600080fd5b8335614e4d81614673565b92506020840135915060408401356001600160401b03811115614e6f57600080fd5b6148d186828701614776565b60008060008060608587031215614e9157600080fd5b8435614e9c81614673565b93506020850135925060408501356001600160401b03811115614ebe57600080fd5b614eca8782880161493e565b95989497509550505050565b600060208284031215614ee857600080fd5b81356001600160401b03811115614efe57600080fd5b6121fd84828501614776565b6001600160a01b0392831681529116602082015260400190565b600080600060608486031215614f3957600080fd5b8335614f4481614673565b925060208401356001600160401b0380821115614f6057600080fd5b614f6c878388016147cc565b935060408601359150808211156148c457600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c4657610c46614f82565b8082028115828204841417610c4657610c46614f82565b80820180821115610c4657610c46614f82565b60018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526000608082015160a060808501526121fd60a08501826148ff565b600060018060a01b0380871683526080602084015261503c6080840187614fd5565b9481166040840152929092166060909101525092915050565b60006020828403121561506757600080fd5b5051919050565b6000806040838503121561508157600080fd5b823561508c81614673565b915060208301356146f181614673565b80600b0b81146111ec57600080fd5b600080604083850312156150be57600080fd5b8235614dcd8161509c565b6020808252602c9082015260008051602061562683398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061562683398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261515a57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561517257600080fd5b8235915060208301356146f18161509c565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602082840312156151ba57600080fd5b8151610d8b81614673565b6001600160a01b0385811682528481166020830152831660408201526080606082018190526000906151f9908301846148ff565b9695505050505050565b60006020828403121561521557600080fd5b8151610d8b816146a5565b8254815260018301546020820152600283015460408201526003830154610120820190615259606084016001600160a01b0383166146fc565b61526b608084018260a01d600b0b9052565b5060048401546001600160a01b031661528760a08401826146fc565b50600584015460c0830152600684015460e0830152610d8b6101008301846146fc565b600080600080600080600060e0888a0312156152c557600080fd5b8751965060208801519550604088015194506060880151935060808801516152ec8161509c565b60a08901519093506152fd8161509c565b60c089015190925061530e8161509c565b8091505092959891949750929550565b600060018060a01b03808816835260a0602084015261534060a0840188614fd5565b9581166040840152938416606083015250911660809091015292915050565b63ffffffff82811682821603908082111561229557612295614f82565b63ffffffff81811683821601908082111561229557612295614f82565b6001600160a01b0393841681529183166020830152909116604082015260600190565b600080600080608085870312156153d257600080fd5b8451935060208501516153e48161509c565b6040860151606090960151949790965092505050565b6000825161540c8184602087016148db565b9190910192915050565b60006020828403121561542857600080fd5b8151610d8b81614bc8565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610c4657610c46614f82565b8781526001600160a01b03878116602083015286811660408301528516606082015263ffffffff84166080820152600b83900b60a082015260e060c08201819052600090610f68908301846148ff565b6000602082840312156154c257600080fd5b81516001600160401b038111156154d857600080fd5b8201601f810184136154e957600080fd5b80516154f76147958261474f565b81815285602083850101111561550c57600080fd5b613aad8260208301602086016148db565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161554f8160178501602088016148db565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516155808160288401602088016148db565b01602801949350505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156155cd57600080fd5b8151610d8b8161509c565b634e487b7160e01b600052603260045260246000fd5b6000816155fd576155fd614f82565b50600019019056fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a2646970667358221220f3c4b96dde31f28ae5647c898489ec05a454718d65fb84258fc474d4a106735964736f6c63430008130033";
2014
+ "0x60e06040523060c0523480156200001557600080fd5b5060405162005c2c38038062005c2c833981016040819052620000389162000098565b6001600160a01b038216608081905282908290620000695760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b031660a05250620000d7915050565b6001600160a01b03811681146200009557600080fd5b50565b60008060408385031215620000ac57600080fd5b8251620000b9816200007f565b6020840151909250620000cc816200007f565b809150509250929050565b60805160a05160c051615aae6200017e6000396000818161124201528181611282015281816115da0152818161161a01526116920152600081816109d001528181610ed80152612595015260008181610c1e01528181610e5a015281816111080152818161174001528181611b8c015281816120a4015281816121ec015281816124ab01528181612dc6015281816130ec0152818161318301526131ed0152615aae6000f3fe6080604052600436106102915760003560e01c806301ffc9a7146102965780630b1ca49a146102cb5780630c710776146102ed5780630ce82d67146103195780630e0cc1b91461033c578063198055381461035c5780631a2a84b3146103955780631a787f2e146103b55780631db128c7146103d5578063200d2ed214610402578063229a36fa14610484578063230dbd29146104a4578063248a9ca3146104c4578063298052df146104e45780632b4116f7146104f95780632f2ff15d1461052657806330d9c9151461054657806336568abe146105665780633659cfe6146105865780633e6968b6146105a657806346b6a742146105bb5780634e71d92d146105db5780634f1ef286146105f057806352d1902d1461060357806353c11f99146106185780635860975414610638578063598f8fbf146106585780635a4c5152146106785780635ab1bd531461070f5780635da93292146107245780635f9e7d77146107395780636180c79314610759578063647c75e21461077957806372ca8a3e146107ea57806373b2e80e1461080a578063791ea89b1461082a5780637b1039991461084a57806388480f0c1461086b578063884d1f40146108bd57806391d14854146108dd57806398d6621b146108fd5780639f8fddd214610912578063a10f469e14610932578063a217fddf14610954578063a4c0ed3614610969578063ae82720014610989578063bcb4546f1461099c578063c31c9c07146109be578063c7713870146109f2578063d3112b2e14610a07578063d547741f14610a3c578063d80528ae14610a5c578063d86ed3e514610aed578063dc61d5c214610b0d578063def482a414610b60578063e06174e414610b80578063ec87621c14610bea578063f437bc5914610c0c575b600080fd5b3480156102a257600080fd5b506102b66102b13660046148f3565b610c40565b60405190151581526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004614932565b610c77565b005b3480156102f957600080fd5b506103066459df64940081565b604051600b9190910b81526020016102c2565b34801561032557600080fd5b5061032e610cab565b6040519081526020016102c2565b34801561034857600080fd5b506102eb61035736600461496d565b610cc9565b34801561036857600080fd5b50610371610cfe565b604080516001600160a01b03909316835263ffffffff9091166020830152016102c2565b3480156103a157600080fd5b5061032e6103b0366004614932565b610d1d565b3480156103c157600080fd5b5061032e6103d0366004614932565b610dbd565b3480156103e157600080fd5b506103f56103f0366004614b0e565b610e38565b6040516102c29190614bd5565b34801561040e57600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f546101405461014254610443979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e0820152610100016102c2565b34801561049057600080fd5b506102eb61049f366004614c33565b610f59565b3480156104b057600080fd5b506103f56104bf366004614cdf565b61103f565b3480156104d057600080fd5b5061032e6104df366004614da9565b611086565b3480156104f057600080fd5b5061032e61109b565b34801561050557600080fd5b50609754610519906001600160a01b031681565b6040516102c29190614dc2565b34801561053257600080fd5b506102eb610541366004614dd6565b6110da565b34801561055257600080fd5b506103f5610561366004614dfb565b6110fb565b34801561057257600080fd5b506102eb610581366004614dd6565b6111be565b34801561059257600080fd5b506102eb6105a1366004614932565b611238565b3480156105b257600080fd5b5061032e611300565b3480156105c757600080fd5b506102eb6105d636600461505d565b61131c565b3480156105e757600080fd5b506102eb6115c3565b6102eb6105fe3660046150b9565b6115d0565b34801561060f57600080fd5b5061032e611685565b34801561062457600080fd5b506103f5610633366004614cdf565b611733565b34801561064457600080fd5b506102eb610653366004615108565b611810565b34801561066457600080fd5b506102eb610673366004615134565b611882565b34801561068457600080fd5b506101375461013854610139546106ca9263ffffffff80821693600160201b808404831694600160401b850484169460ff600160601b9091048116948216929091041687565b6040805163ffffffff98891681529688166020880152948716948601949094529115156060850152608084015290921660a082015290151560c082015260e0016102c2565b34801561071b57600080fd5b506105196119b7565b34801561073057600080fd5b5061032e6119c7565b34801561074557600080fd5b506103f5610754366004614dfb565b611b7f565b34801561076557600080fd5b506102b66107743660046150b9565b611c64565b34801561078557600080fd5b506107c3610794366004614932565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b0316908201526060016102c2565b3480156107f657600080fd5b506102b6610805366004614932565b611dc9565b34801561081657600080fd5b506102b6610825366004614932565b611ddd565b34801561083657600080fd5b506102eb610845366004615150565b611f07565b34801561085657600080fd5b5061014354610519906001600160a01b031681565b34801561087757600080fd5b506101445461014554610146546108969263ffffffff90811692911683565b6040805163ffffffff948516815260208101939093529216918101919091526060016102c2565b3480156108c957600080fd5b506103f56108d8366004614dfb565b612097565b3480156108e957600080fd5b506102b66108f8366004614dd6565b612194565b34801561090957600080fd5b5061032e6121bf565b34801561091e57600080fd5b506103f561092d366004615186565b6121ca565b34801561093e57600080fd5b5061032e600080516020615a5983398151915281565b34801561096057600080fd5b5061032e600081565b34801561097557600080fd5b506102b66109843660046151d4565b612284565b6102eb610997366004615223565b6122fd565b3480156109a857600080fd5b5061032e6000805160206159b283398151915281565b3480156109ca57600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b3480156109fe57600080fd5b5061032e612383565b348015610a1357600080fd5b50609954609a54610a2e916001600160a01b03908116911682565b6040516102c2929190615257565b348015610a4857600080fd5b506102eb610a57366004614dd6565b612394565b348015610a6857600080fd5b50609b54609c54609d54609e54609f5460a05460a154610aa3969594936001600160a01b0380821694600160a01b909204600b0b9391169188565b604080519889526020890197909752958701949094526001600160a01b039283166060870152600b9190910b60808601521660a084015260c083015260e0820152610100016102c2565b348015610af957600080fd5b506103f5610b08366004614cdf565b6123b0565b348015610b1957600080fd5b50610b226123de565b604080519788526020880196909652948601939093526060850191909152600b90810b608085015290810b60a08401520b60c082015260e0016102c2565b348015610b6c57600080fd5b506103f5610b7b366004615271565b612489565b348015610b8c57600080fd5b5061013354610134546101355461013654610bb7936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016102c2565b348015610bf657600080fd5b5061032e600080516020615a1283398151915281565b348015610c1857600080fd5b506105197f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610c7157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020615a12833981519152610c8f816126dc565b610ca7600080516020615a59833981519152836126e6565b5050565b61013d54600090610cba611300565b610cc491906152e5565b905090565b61013754600160601b900460ff16610cf4576040516369973f2560e11b815260040160405180910390fd5b610ca782826127c6565b61013354610146546001600160a01b039091169163ffffffff90911690565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610d7a575192915050565b6040810151610d92906001600160801b0316426152e5565b81602001516001600160601b0316610daa91906152f8565b8151610db6919061530f565b9392505050565b6000610dc7611300565b61013a54148015610dda575061013b5415155b15610e30576101445463ffffffff1615801590610e0557506101445461013f5463ffffffff90911611155b15610e1257506000919050565b610e1b82611ddd565b610e285761013b54610c71565b600092915050565b610c71612383565b606082336001600160a01b03821614801590610e7d5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610ea6573360405163087231bf60e31b8152600401610e9d9190614dc2565b60405180910390fd5b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610f0e917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a90600401615367565b602060405180830381865af4158015610f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4f91906153a2565b5091949350505050565b600080516020615a12833981519152610f71816126dc565b838214610f915760405163899ef10d60e01b815260040160405180910390fd5b60005b8481101561103757611024868683818110610fb157610fb16153bb565b9050602002016020810190610fc69190614932565b858584818110610fd857610fd86153bb565b9050602002810190610fea91906153d1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a6b92505050565b508061102f81615417565b915050610f94565b505050505050565b6060600061104f87890189615430565b5090506000806110618789018961546d565b915091506110738d8484848a8a612c32565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b61013754600090600160201b900463ffffffff166110b7611300565b6110c1919061530f565b6110ce90620151806152f8565b610cc49061a8c061530f565b6110e382611086565b6110ec816126dc565b6110f68383612c79565b505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114657604051632f2d36a760e01b815260040160405180910390fd5b61114f87612da0565b6111725750604080518082019091526002815261060f60f31b60208201526111b3565b61117b88611dc9565b61119857604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b038116331461122e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610e9d565b610ca782826126e6565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112805760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112b2612e54565b6001600160a01b0316146112d85760405162461bcd60e51b8152600401610e9d906154c5565b6112e181612e70565b604080516000808252602082019092526112fd91839190612e7b565b50565b60006201518061131261a8c0426152e5565b610cc491906154ff565b600054610100900460ff161580801561133c5750600054600160ff909116105b8061135d575061134b30612fe6565b15801561135d575060005460ff166001145b6113c05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e9d565b6000805460ff1916600117905580156113e3576000805461ff0019166101001790555b61014380546001600160a01b03199081166001600160a01b038581169190911790925586516101338054831691841691909117905560208088015161013480548416918516919091179055604080890151610135805485169186169190911790556060808a0151610136805490951695169490941790925586516101378054898401518a860151968b015163ffffffff9485166001600160401b031990931692909217600160201b91851682021764ffffffffff60401b1916600160401b9785169790970260ff60601b191696909617600160601b9115159190910217905560808801516101385560a0880151610139805460c08b015192841664ffffffffff1990911617911515909502179093558551610144805463ffffffff199081169286169290921790559086015161014555908501516101468054909216921691909117905561153085612ff5565b61153984613035565b61154460003361308c565b611560600080516020615a12833981519152866000015161308c565b61013654611576906001600160a01b0316613096565b80156115bc576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6115ce3360016127c6565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036116185760405162461bcd60e51b8152600401610e9d9061548b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661164a612e54565b6001600160a01b0316146116705760405162461bcd60e51b8152600401610e9d906154c5565b61167982612e70565b610ca782826001612e7b565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117205760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610e9d565b506000805160206159f283398151915290565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611773575061177189612da0565b155b8061178457506117828a611dc9565b155b156117c85782828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092935061107992505050565b6000806117d7888a018a615430565b90925090506000806117eb888a018a615521565b915091506117fe8e858584868c8c6132c7565b9e9d5050505050505050505050505050565b6097546040516332d4cd0360e11b815273__$0d78a42341742155da77b97d7f993534c7$__916365a99a0691611856916001600160a01b03169086908690600401615546565b60006040518083038186803b15801561186e57600080fd5b505af4158015611037573d6000803e3d6000fd5b600080516020615a1283398151915261189a816126dc565b6118a382612ff5565b6101335482516001600160a01b039081169116146118fd57610133546118e190600080516020615a12833981519152906001600160a01b03166126e6565b6118fd600080516020615a12833981519152836000015161308c565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a161790965582519687529251871693860193909352915185168483015291519093169082015290517fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d9159351916080908290030190a15050565b610143546001600160a01b031690565b6000806119d2611300565b6101375461013a549192506119f591600160201b90910463ffffffff169061530f565b8110611b76576000806000611a0861331a565b9250925092508015611af157610136546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611a46903090600401614dc2565b602060405180830381865afa158015611a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8791906153a2565b61013c8590556101375463ffffffff1661013e81905561013d879055604080518881526020810184905290810191909152606081018690529091507f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a1505b61013a84905561013b829055610145548211611b0e57600061013b555b61013b5461013f5461014054604080518881526020810194909452438482015260608401929092526080830152517fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89181900360a00190a15050600061013f81905561014055505b505061013b5490565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611bbf5750611bbd87612da0565b155b80611bd05750611bce88611dc9565b155b15611bf45750604080518082019091526002815261060f60f31b60208201526111b3565b600080611c0386880188615430565b9092509050600080611c1f6001600160a01b038d1685856134cc565b5050915091508181604051602001611c44929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b600080611c718484612a6b565b905080610db657610135546001600160a01b031615611d2a57610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690611cbc908890600401614dc2565b602060405180830381865afa158015611cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd919061556a565b90506001600160a01b038116611d285784604051630b7b234960e01b8152600401610e9d9190614dc2565b505b610134546001600160a01b031615801590611d5a5750611d58600080516020615a1283398151915233612194565b155b15611d7a578360405163130f4a3760e11b8152600401610e9d9190614dc2565b61013954600160201b900460ff168015611da95750611da7600080516020615a1283398151915233612194565b155b15610db65783604051636f6acad560e01b8152600401610e9d9190614dc2565b6097546001600160a01b0390811691161490565b6101355460009082906001600160a01b031615611e6957610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e25908690600401614dc2565b602060405180830381865afa158015611e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e66919061556a565b90505b610135546040516316874da360e11b81526001600160a01b0390911690632d0e9b4690611e9a908690600401614dc2565b602060405180830381865afa158015611eb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edb919061556a565b9050611ee5611300565b6001600160a01b03909116600090815261014160205260409020541492915050565b600080516020615a12833981519152611f1f816126dc565b611f2883613035565b8251610137805460208087015160408089015160608a01511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b9081026001600160401b0319909816998416999099179690961793909316949094179190911790935560808701516101385560a0870151610139805460c08a0151151590960264ffffffffff1990961691841691909117949094179093558451610144805491831663ffffffff19928316179055928501516101455584820151610146805491909216931692909217909155517f9c2d0f3e240667c2b704104ff988af37be9eb4befb81fe00424626b088ee75799061208a908590600060e08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525060c0830151151560c083015292915050565b60405180910390a1505050565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120e257604051632f2d36a760e01b815260040160405180910390fd5b6120eb87612da0565b61210e5750604080518082019091526002815261060f60f31b60208201526111b3565b61211788611dc9565b61213457604051631ea25bab60e31b815260040160405180910390fd5b600061214285870187615430565b50905060008061215c6001600160a01b038c1684306134cc565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610cc433610dbd565b606083336001600160a01b0382161480159061220f5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b1561222f573360405163087231bf60e31b8152600401610e9d9190614dc2565b8360000361225057604051630f6fa54560e41b815260040160405180910390fd5b609754612268906001600160a01b0316863087613564565b610f4f858560006040518060200160405280600081525061366a565b6097546000906001600160a01b031633146122b257604051630ce706f760e41b815260040160405180910390fd5b836000036122d357604051630f6fa54560e41b815260040160405180910390fd5b6122ef858560006040518060200160405280600081525061366a565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015612348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236c919061556a565b905061237781612e70565b610ca781836000612e7b565b600061238d61331a565b5092915050565b61239d82611086565b6123a6816126dc565b6110f683836126e6565b606060006123c087890189615430565b5090506123cf8b828686613d12565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b815260009182918291829182918291829173__$0d78a42341742155da77b97d7f993534c7$__9163b2f918a19161243291609b916001600160a01b031690600401615587565b60e060405180830381865af415801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190615611565b959d949c50929a50909850965094509092509050565b606083336001600160a01b038216148015906124ce5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b156124ee573360405163087231bf60e31b8152600401610e9d9190614dc2565b6097546040516370a0823160e01b81526000916001600160a01b0316906370a082319061251f903090600401614dc2565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256091906153a2565b6097546040516321437a5360e01b815291925073__$0d78a42341742155da77b97d7f993534c7$__916321437a53916125cf917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b03909116908c903090600401615685565b602060405180830381865af41580156125ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261091906153a2565b506097546040516370a0823160e01b815260009183916001600160a01b03909116906370a0823190612646903090600401614dc2565b602060405180830381865afa158015612663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268791906153a2565b61269191906152e5565b9050806000036126b457604051630f6fa54560e41b815260040160405180910390fd5b6126d0878260006040518060200160405280600081525061366a565b50939695505050505050565b6112fd8133613d60565b600080516020615a59833981519152821480156127165750612716600080516020615a5983398151915282612194565b156127bc5761014280546001919060009061273890849063ffffffff166156c6565b825463ffffffff9182166101009390930a9283029190920219909116179055506101435460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a90612789908490600401614dc2565b600060405180830381600087803b1580156127a357600080fd5b505af11580156127b7573d6000803e3d6000fd5b505050505b610ca78282613db9565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906127f8908690600401614dc2565b602060405180830381865afa158015612815573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612839919061556a565b90506001600160a01b0381166128645782604051630b7b234960e01b8152600401610e9d9190614dc2565b6101395463ffffffff1615801590612887575061013954600160201b900460ff16155b156128a4576128a4600080516020615a5983398151915284612c79565b6101395463ffffffff161515806128c5575061013954600160201b900460ff165b80156128e657506128e4600080516020615a5983398151915284612194565b155b15612906578260405163130f4a3760e11b8152600401610e9d9190614dc2565b6101445463ffffffff161580159061292c57506101445461013f5463ffffffff90911611155b156129525761013f54604051635136bc3160e01b81526004810191909152602401610e9d565b600061295c6119c7565b61013a546001600160a01b03841660009081526101416020526040902054919250900361299e5781604051631fc1cabf60e31b8152600401610e9d9190614dc2565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f8054600192906129d390849061530f565b909155505061014080548291906000906129ee90849061530f565b90915550612a18905083612a025784612a04565b825b610136546001600160a01b03169083613e20565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d83604051612a5d91815260200190565b60405180910390a350505050565b6000612a85600080516020615a5983398151915284612194565b15612a9257506001610c71565b610135546001600160a01b031615612b3357610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690612ad6908790600401614dc2565b602060405180830381865afa158015612af3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b17919061556a565b90506001600160a01b038116612b31576000915050610c71565b505b610134546001600160a01b031615612bd557610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa90612b7c9030903390889088906004016156e3565b6020604051808303816000875af1158015612b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbf9190615721565b1515600003612bd057506000610c71565b612c11565b61013954600160201b900460ff168015612c045750612c02600080516020615a1283398151915233612194565b155b15612c1157506000610c71565b612c29600080516020615a5983398151915284612c79565b50600192915050565b60606111b38686600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b600080516020615a5983398151915282148015612cab5750612ca9600080516020615a5983398151915282612194565b155b15612d96576101395463ffffffff1615801590612cd85750610139546101425463ffffffff918216911610155b15612cf657604051632263c94160e01b815260040160405180910390fd5b6101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc90612d27908490600401614dc2565b600060405180830381600087803b158015612d4157600080fd5b505af1158015612d55573d6000803e3d6000fd5b5050610142805460019350909150600090612d7790849063ffffffff1661573e565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610ca78282613e76565b604051635b69006f60e11b81526000805160206159b283398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa158015612e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e39919061556a565b6001600160a01b0316826001600160a01b0316149050919050565b6000805160206159f2833981519152546001600160a01b031690565b6000610ca7816126dc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612eae576110f683613efc565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f08575060408051601f3d908101601f19168201909252612f05918101906153a2565b60015b612f6b5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610e9d565b6000805160206159f28339815191528114612fda5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610e9d565b506110f6838383613f96565b6001600160a01b03163b151590565b80516001600160a01b03161580613017575060608101516001600160a01b0316155b156112fd57604051631e597d8360e11b815260040160405180910390fd5b602081015163ffffffff1615806130515750805163ffffffff16155b806130645750604081015163ffffffff16155b80613017575060808101516112fd57604051631e597d8360e11b815260040160405180910390fd5b610ca78282612c79565b6001600160a01b0381166130bd5760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383811691909117909155604051631e51d6a760e11b81527f000000000000000000000000000000000000000000000000000000000000000090911690633ca3ad4e90613123903090600401614dc2565b602060405180830381865afa158015613140573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131649190615721565b15156000036131e2576040516315a722b960e31b8152600160048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ad3915c890602401600060405180830381600087803b1580156131cf57600080fd5b505af19250505080156131e0575060015b505b6040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b81526000805160206159b283398151915260048201529091602083019163b6d200de90602401602060405180830381865afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613289919061556a565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a8054909316911617905550565b606061330e8786600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b98975050505050505050565b610136546040516370a0823160e01b81526000918291829182916001600160a01b03909116906370a0823190613354903090600401614dc2565b602060405180830381865afa158015613371573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061339591906153a2565b610137549091506000906133af9063ffffffff16836154ff565b90506000606461013a6002015460696133c891906152f8565b6133d291906154ff565b821180613416575061013e546133e6610cab565b1115801561341657506133f7610cab565b61013e5461340591906152e5565b61013c5461341391906152f8565b83105b61013c5461013e5490975090915061342c610cab565b61343790600161530f565b1015806134415750805b15613461576101375461345a9063ffffffff16846154ff565b9550600193505b6101385461013f546134b191906134a29061271090613482906129046152f8565b61348c91906154ff565b61013754600160401b900463ffffffff16613fc1565b6134ac90896154ff565b613fd8565b610145549095508510156134c457600094505b505050909192565b60008060008060006134dd88613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890613511908b908b908b9060040161575b565b608060405180830381865afa15801561352e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613552919061577e565b929b919a509850909650945050505050565b600080856001600160a01b03166323b872dd60e01b86868660405160240161358e93929190615546565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516135cc91906157bc565b6000604051808303816000865af19150503d8060008114613609576040519150601f19603f3d011682016040523d82523d6000602084013e61360e565b606091505b50915091508180156136385750805115806136385750808060200190518101906136389190615721565b6110375760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610e9d565b80518190151560008061367b610cfe565b609754919350915073__$0d78a42341742155da77b97d7f993534c7$__9063934e2cce90609b906001600160a01b03166136b36119b7565b85886136bf578c6136c2565b60005b6040516001600160e01b031960e088901b16815260048101959095526001600160a01b03938416602486015292909116604484015263ffffffff166064830152608482015260a40160006040518083038186803b15801561372257600080fd5b505af4158015613736573d6000803e3d6000fd5b50506097546000925061375491506001600160a01b03168a30614156565b6001600160a01b038a166000908152609860205260409020549091508415613b4957600082600b0b13801561379157506459df649400600b83900b125b156137b457604051624963df60e91b8152600b83900b6004820152602401610e9d565b6001600160a01b038a16600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b038516179091556138169089906152e5565b613820908a6152f8565b6001600160a01b038b166000908152609860205260408120805490919061384890849061530f565b90915550600090506138586119b7565b6001600160a01b031614613a1b5761386e6119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cf919061556a565b93506138d96119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061393a91906157d8565b925073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60030160009054906101000a90046001600160a01b031688888f8961399591906157f5565b8d6040518863ffffffff1660e01b81526004016139b89796959493929190615822565b600060405180830381865af41580156139d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139fd9190810190615872565b609e80546001600160a01b0319166001600160a01b03871617905595505b613a23610cfe565b809450819550505073__$0d78a42341742155da77b97d7f993534c7$__634d167a906099609760009054906101000a90046001600160a01b0316609b60040160009054906101000a90046001600160a01b031688888f89613a8491906157f5565b8d6040518863ffffffff1660e01b8152600401613aa79796959493929190615822565b600060405180830381865af4158015613ac4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aec9190810190615872565b609f80546001600160a01b0319166001600160a01b0387811691909117909155609754919750613b1d9116306141e4565b609e80546001600160601b0392909216600160a01b026001600160a01b03909216919091179055613c88565b6000613b536119b7565b6001600160a01b031614613c4257613b696119b7565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bca919061556a565b9350613bd46119b7565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3591906157d8565b9250613c4284848b614263565b613c4a610cfe565b9094509250613c5a84848b614263565b6001600160a01b038a16600090815260986020526040812080548b9290613c8290849061530f565b90915550505b6001600160a01b038a166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839088613cd1576000613cd3565b8c5b604080519384526020840192909252600b90810b8383015286900b60608301528815156080830152519081900360a00190a25050505050949350505050565b6060613d578460008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061366a92505050565b95945050505050565b613d6a8282612194565b610ca757613d77816142af565b613d828360206142c1565b604051602001613d939291906158df565b60408051601f198184030181529082905262461bcd60e51b8252610e9d91600401614bd5565b613dc38282612194565b15610ca75760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6110f68363a9059cbb60e01b8484604051602401613e3f92919061594e565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261445c565b613e808282612194565b610ca75760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055613eb83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b613f0581612fe6565b613f675760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610e9d565b6000805160206159f283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613f9f8361452e565b600082511180613fac5750805b156110f657613fbb838361456e565b50505050565b600081831015613fd15781610db6565b5090919050565b6000818310613fd15781610db6565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b038116614125576001600160a01b0382166140ac57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015614085573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a9919061556a565b91505b604051635b69006f60e11b81526000805160206159b283398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa1580156140fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614122919061556a565b90505b6001600160a01b03821661413b5761413b615967565b6001600160a01b03811661415157614151615967565b915091565b60008061416285613fe7565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e888906141969088908890889060040161575b565b608060405180830381865afa1580156141b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d7919061577e565b5090979650505050505050565b6000806141f084613fe7565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d1906142229087908790600401615257565b602060405180830381865afa15801561423f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f5919061597d565b6001600160a01b03831661427657505050565b600061271061428b63ffffffff8516846152f8565b61429591906154ff565b609754909150613fbb906001600160a01b03168583614657565b6060610c716001600160a01b03831660145b606060006142d08360026152f8565b6142db90600261530f565b6001600160401b038111156142f2576142f26149b3565b6040519080825280601f01601f19166020018201604052801561431c576020820181803683370190505b509050600360fc1b81600081518110614337576143376153bb565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614366576143666153bb565b60200101906001600160f81b031916908160001a905350600061438a8460026152f8565b61439590600161530f565b90505b600181111561440d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106143c9576143c96153bb565b1a60f81b8282815181106143df576143df6153bb565b60200101906001600160f81b031916908160001a90535060049490941c936144068161599a565b9050614398565b508315610db65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e9d565b60006144b1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661475a9092919063ffffffff16565b8051909150156110f657808060200190518101906144cf9190615721565b6110f65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e9d565b61453781613efc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061457983612fe6565b6145d45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610e9d565b600080846001600160a01b0316846040516145ef91906157bc565b600060405180830381855af49150503d806000811461462a576040519150601f19603f3d011682016040523d82523d6000602084013e61462f565b606091505b5091509150613d578282604051806060016040528060278152602001615a3260279139614769565b600080846001600160a01b031663a9059cbb60e01b858560405160240161467f92919061594e565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516146bd91906157bc565b6000604051808303816000865af19150503d80600081146146fa576040519150601f19603f3d011682016040523d82523d6000602084013e6146ff565b606091505b50915091508180156147295750805115806147295750808060200190518101906147299190615721565b6115bc5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610e9d565b60606122f58484600085614782565b60608315614778575081610db6565b610db68383614852565b6060824710156147e35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e9d565b600080866001600160a01b031685876040516147ff91906157bc565b60006040518083038185875af1925050503d806000811461483c576040519150601f19603f3d011682016040523d82523d6000602084013e614841565b606091505b50915091506111b38783838761487c565b8151156148625781518083602001fd5b8060405162461bcd60e51b8152600401610e9d9190614bd5565b606083156148e95782516000036148e25761489685612fe6565b6148e25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e9d565b50816122f5565b6122f58383614852565b60006020828403121561490557600080fd5b81356001600160e01b031981168114610db657600080fd5b6001600160a01b03811681146112fd57600080fd5b60006020828403121561494457600080fd5b8135610db68161491d565b80151581146112fd57600080fd5b80356149688161494f565b919050565b6000806040838503121561498057600080fd5b823561498b8161491d565b9150602083013561499b8161494f565b809150509250929050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156149f1576149f16149b3565b604052919050565b60006001600160401b03821115614a1257614a126149b3565b50601f01601f191660200190565b600082601f830112614a3157600080fd5b8135614a44614a3f826149f9565b6149c9565b818152846020838601011115614a5957600080fd5b816020850160208301376000918101602001919091529392505050565b600060a08284031215614a8857600080fd5b60405160a081016001600160401b038082118383101715614aab57614aab6149b3565b8160405282935084359150614abf8261491d565b8183526020850135602084015260408501356040840152606085013560608401526080850135915080821115614af457600080fd5b50614b0185828601614a20565b6080830152505092915050565b600080600060608486031215614b2357600080fd5b83356001600160401b0380821115614b3a57600080fd5b614b4687838801614a76565b945060208601359150614b588261491d565b90925060408501359080821115614b6e57600080fd5b50614b7b86828701614a20565b9150509250925092565b60005b83811015614ba0578181015183820152602001614b88565b50506000910152565b60008151808452614bc1816020860160208601614b85565b601f01601f19169290920160200192915050565b602081526000610db66020830184614ba9565b60008083601f840112614bfa57600080fd5b5081356001600160401b03811115614c1157600080fd5b6020830191508360208260051b8501011115614c2c57600080fd5b9250929050565b60008060008060408587031215614c4957600080fd5b84356001600160401b0380821115614c6057600080fd5b614c6c88838901614be8565b90965094506020870135915080821115614c8557600080fd5b50614c9287828801614be8565b95989497509550505050565b60008083601f840112614cb057600080fd5b5081356001600160401b03811115614cc757600080fd5b602083019150836020828501011115614c2c57600080fd5b600080600080600080600080600060c08a8c031215614cfd57600080fd5b8935614d088161491d565b985060208a0135614d188161491d565b975060408a0135965060608a01356001600160401b0380821115614d3b57600080fd5b614d478d838e01614c9e565b909850965060808c0135915080821115614d6057600080fd5b614d6c8d838e01614c9e565b909650945060a08c0135915080821115614d8557600080fd5b50614d928c828d01614c9e565b915080935050809150509295985092959850929598565b600060208284031215614dbb57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60008060408385031215614de957600080fd5b82359150602083013561499b8161491d565b600080600080600080600060a0888a031215614e1657600080fd5b8735614e218161491d565b96506020880135614e318161491d565b95506040880135945060608801356001600160401b0380821115614e5457600080fd5b614e608b838c01614c9e565b909650945060808a0135915080821115614e7957600080fd5b50614e868a828b01614c9e565b989b979a50959850939692959293505050565b600060808284031215614eab57600080fd5b604051608081016001600160401b0381118282101715614ecd57614ecd6149b3565b6040529050808235614ede8161491d565b81526020830135614eee8161491d565b60208201526040830135614f018161491d565b60408201526060830135614f148161491d565b6060919091015292915050565b63ffffffff811681146112fd57600080fd5b803561496881614f21565b600060e08284031215614f5057600080fd5b60405160e081016001600160401b0381118282101715614f7257614f726149b3565b6040529050808235614f8381614f21565b81526020830135614f9381614f21565b60208201526040830135614fa681614f21565b60408201526060830135614fb98161494f565b606082015260808381013590820152614fd460a08401614f33565b60a0820152614fe560c0840161495d565b60c08201525092915050565b60006060828403121561500357600080fd5b604051606081016001600160401b0381118282101715615025576150256149b3565b604052905080823561503681614f21565b815260208381013590820152604083013561505081614f21565b6040919091015292915050565b6000806000806101e0858703121561507457600080fd5b61507e8686614e99565b935061508d8660808701614f3e565b925061509d866101608701614ff1565b91506101c08501356150ae8161491d565b939692955090935050565b600080604083850312156150cc57600080fd5b82356150d78161491d565b915060208301356001600160401b038111156150f257600080fd5b6150fe85828601614a20565b9150509250929050565b6000806040838503121561511b57600080fd5b82356151268161491d565b946020939093013593505050565b60006080828403121561514657600080fd5b610db68383614e99565b600080610140838503121561516457600080fd5b61516e8484614f3e565b915061517d8460e08501614ff1565b90509250929050565b60008060006060848603121561519b57600080fd5b83356151a68161491d565b92506020840135915060408401356001600160401b038111156151c857600080fd5b614b7b86828701614a20565b600080600080606085870312156151ea57600080fd5b84356151f58161491d565b93506020850135925060408501356001600160401b0381111561521757600080fd5b614c9287828801614c9e565b60006020828403121561523557600080fd5b81356001600160401b0381111561524b57600080fd5b6122f584828501614a20565b6001600160a01b0392831681529116602082015260400190565b60008060006060848603121561528657600080fd5b83356152918161491d565b925060208401356001600160401b03808211156152ad57600080fd5b6152b987838801614a76565b93506040860135915080821115614b6e57600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610c7157610c716152cf565b8082028115828204841417610c7157610c716152cf565b80820180821115610c7157610c716152cf565b60018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526000608082015160a060808501526122f560a0850182614ba9565b600060018060a01b038087168352608060208401526153896080840187615322565b9481166040840152929092166060909101525092915050565b6000602082840312156153b457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153e857600080fd5b8301803591506001600160401b0382111561540257600080fd5b602001915036819003821315614c2c57600080fd5b600060018201615429576154296152cf565b5060010190565b6000806040838503121561544357600080fd5b823561544e8161491d565b9150602083013561499b8161491d565b80600b0b81146112fd57600080fd5b6000806040838503121561548057600080fd5b82356151268161545e565b6020808252602c908201526000805160206159d283398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206159d283398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60008261551c57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561553457600080fd5b82359150602083013561499b8161545e565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006020828403121561557c57600080fd5b8151610db68161491d565b82548152600183015460208201526002830154604082015260038301546101208201906155c0606084016001600160a01b0383166149a6565b6155d2608084018260a01d600b0b9052565b5060048401546001600160a01b03166155ee60a08401826149a6565b50600584015460c0830152600684015460e0830152610db66101008301846149a6565b600080600080600080600060e0888a03121561562c57600080fd5b8751965060208801519550604088015194506060880151935060808801516156538161545e565b60a08901519093506156648161545e565b60c08901519092506156758161545e565b8091505092959891949750929550565b600060018060a01b03808816835260a060208401526156a760a0840188615322565b9581166040840152938416606083015250911660809091015292915050565b63ffffffff82811682821603908082111561238d5761238d6152cf565b6001600160a01b03858116825284811660208301528316604082015260806060820181905260009061571790830184614ba9565b9695505050505050565b60006020828403121561573357600080fd5b8151610db68161494f565b63ffffffff81811683821601908082111561238d5761238d6152cf565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000806000806080858703121561579457600080fd5b8451935060208501516157a68161545e565b6040860151606090960151949790965092505050565b600082516157ce818460208701614b85565b9190910192915050565b6000602082840312156157ea57600080fd5b8151610db681614f21565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610c7157610c716152cf565b8781526001600160a01b03878116602083015286811660408301528516606082015263ffffffff84166080820152600b83900b60a082015260e060c0820181905260009061107990830184614ba9565b60006020828403121561588457600080fd5b81516001600160401b0381111561589a57600080fd5b8201601f810184136158ab57600080fd5b80516158b9614a3f826149f9565b8181528560208385010111156158ce57600080fd5b613d57826020830160208601614b85565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615911816017850160208801614b85565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615942816028840160208801614b85565b01602801949350505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561598f57600080fd5b8151610db68161545e565b6000816159a9576159a96152cf565b50600019019056fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a264697066735822122062f743e946a147009c29cfe1143fc87a4d6429bfea9b25233a94acfa52341f3364736f6c63430008130033";
1992
2015
 
1993
2016
  type UBIPoolConstructorParams =
1994
2017
  | [linkLibraryAddresses: UBIPoolLibraryAddresses, signer?: Signer]