@layerzerolabs/lz-evm-sdk-v2 2.0.12 → 2.0.13

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 (49) hide show
  1. package/artifacts/contracts/EndpointV2.sol/EndpointV2.json +21 -14
  2. package/artifacts/contracts/EndpointV2Alt.sol/EndpointV2Alt.json +21 -14
  3. package/artifacts/contracts/Executor.sol/Executor.json +2 -2
  4. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +2 -2
  5. package/artifacts/contracts/MessageLibManager.sol/MessageLibManager.json +0 -12
  6. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +2 -2
  7. package/artifacts/contracts/Treasury.sol/Treasury.json +2 -2
  8. package/artifacts/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +19 -12
  9. package/artifacts/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +0 -12
  10. package/artifacts/contracts/messagelib/BlockedMessageLib.sol/BlockedMessageLib.json +2 -2
  11. package/artifacts/contracts/messagelib/SimpleMessageLib.sol/SimpleMessageLib.json +2 -2
  12. package/artifacts/contracts/messagelib/libs/PacketV1Codec.sol/PacketV1Codec.json +2 -2
  13. package/artifacts/contracts/oapp/examples/OmniCounter.sol/MsgCodec.json +2 -2
  14. package/artifacts/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +2 -2
  15. package/artifacts/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +2 -2
  16. package/artifacts/contracts/oft/OFT.sol/OFT.json +2 -2
  17. package/artifacts/contracts/oft/OFTAdapter.sol/OFTAdapter.json +2 -2
  18. package/artifacts/contracts/precrime/libs/Packet.sol/PacketDecoder.json +2 -2
  19. package/artifacts/contracts/uln/LzExecutor.sol/LzExecutor.json +2 -2
  20. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +2 -2
  21. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +2 -2
  22. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +2 -2
  23. package/artifacts/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +2 -2
  24. package/artifacts/contracts/uln/uln301/SendUln301.sol/SendUln301.json +2 -2
  25. package/artifacts/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +2 -2
  26. package/artifacts/contracts/uln/uln302/SendUln302.sol/SendUln302.json +2 -2
  27. package/deployments/bb1-mainnet/PriceFeed.json +891 -0
  28. package/deployments/bb1-mainnet/PriceFeedProxyAdmin.json +284 -0
  29. package/deployments/bb1-mainnet/PriceFeed_Implementation.json +913 -0
  30. package/deployments/bb1-mainnet/PriceFeed_Proxy.json +245 -0
  31. package/deployments/kiwi2-testnet/PriceFeed.json +30 -30
  32. package/deployments/kiwi2-testnet/PriceFeedProxyAdmin.json +16 -16
  33. package/deployments/kiwi2-testnet/PriceFeed_Implementation.json +9 -9
  34. package/deployments/kiwi2-testnet/PriceFeed_Proxy.json +29 -29
  35. package/dist/{index-pO8kCANF.d.mts → index-a-x9ryaD.d.mts} +134 -120
  36. package/dist/{index-pO8kCANF.d.ts → index-a-x9ryaD.d.ts} +134 -120
  37. package/dist/index.browser.cjs +77 -80
  38. package/dist/index.browser.cjs.map +1 -1
  39. package/dist/index.browser.d.mts +1 -1
  40. package/dist/index.browser.d.ts +1 -1
  41. package/dist/index.browser.mjs +77 -80
  42. package/dist/index.browser.mjs.map +1 -1
  43. package/dist/index.cjs +77 -80
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.d.mts +1 -1
  46. package/dist/index.d.ts +1 -1
  47. package/dist/index.mjs +77 -80
  48. package/dist/index.mjs.map +1 -1
  49. package/package.json +8 -8
@@ -741,9 +741,10 @@ interface ILayerZeroEndpointV2Interface extends utils.Interface {
741
741
  events: {
742
742
  "ComposeDelivered(address,address,bytes32,uint16)": EventFragment;
743
743
  "ComposeSent(address,address,bytes32,uint16,bytes)": EventFragment;
744
- "DefaultReceiveLibrarySet(uint32,address,address)": EventFragment;
744
+ "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
745
745
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
746
746
  "DefaultSendLibrarySet(uint32,address)": EventFragment;
747
+ "DelegateSet(address,address)": EventFragment;
747
748
  "InboundNonceSkipped(uint32,bytes32,address,uint64)": EventFragment;
748
749
  "LibraryRegistered(address)": EventFragment;
749
750
  "LzComposeAlert(address,address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)": EventFragment;
@@ -754,7 +755,7 @@ interface ILayerZeroEndpointV2Interface extends utils.Interface {
754
755
  "PacketNilified(uint32,bytes32,address,uint64,bytes32)": EventFragment;
755
756
  "PacketSent(bytes,bytes,address)": EventFragment;
756
757
  "PacketVerified(tuple,address,bytes32)": EventFragment;
757
- "ReceiveLibrarySet(address,uint32,address,address)": EventFragment;
758
+ "ReceiveLibrarySet(address,uint32,address)": EventFragment;
758
759
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
759
760
  "SendLibrarySet(address,uint32,address)": EventFragment;
760
761
  };
@@ -763,6 +764,7 @@ interface ILayerZeroEndpointV2Interface extends utils.Interface {
763
764
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibrarySet"): EventFragment;
764
765
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibraryTimeoutSet"): EventFragment;
765
766
  getEvent(nameOrSignatureOrTopic: "DefaultSendLibrarySet"): EventFragment;
767
+ getEvent(nameOrSignatureOrTopic: "DelegateSet"): EventFragment;
766
768
  getEvent(nameOrSignatureOrTopic: "InboundNonceSkipped"): EventFragment;
767
769
  getEvent(nameOrSignatureOrTopic: "LibraryRegistered"): EventFragment;
768
770
  getEvent(nameOrSignatureOrTopic: "LzComposeAlert"): EventFragment;
@@ -807,12 +809,10 @@ type ComposeSentEvent$4 = TypedEvent<[
807
809
  type ComposeSentEventFilter$4 = TypedEventFilter<ComposeSentEvent$4>;
808
810
  interface DefaultReceiveLibrarySetEventObject$4 {
809
811
  eid: number;
810
- oldLib: string;
811
812
  newLib: string;
812
813
  }
813
814
  type DefaultReceiveLibrarySetEvent$4 = TypedEvent<[
814
815
  number,
815
- string,
816
816
  string
817
817
  ], DefaultReceiveLibrarySetEventObject$4>;
818
818
  type DefaultReceiveLibrarySetEventFilter$4 = TypedEventFilter<DefaultReceiveLibrarySetEvent$4>;
@@ -836,6 +836,15 @@ type DefaultSendLibrarySetEvent$4 = TypedEvent<[
836
836
  string
837
837
  ], DefaultSendLibrarySetEventObject$4>;
838
838
  type DefaultSendLibrarySetEventFilter$4 = TypedEventFilter<DefaultSendLibrarySetEvent$4>;
839
+ interface DelegateSetEventObject$2 {
840
+ sender: string;
841
+ delegate: string;
842
+ }
843
+ type DelegateSetEvent$2 = TypedEvent<[
844
+ string,
845
+ string
846
+ ], DelegateSetEventObject$2>;
847
+ type DelegateSetEventFilter$2 = TypedEventFilter<DelegateSetEvent$2>;
839
848
  interface InboundNonceSkippedEventObject$4 {
840
849
  srcEid: number;
841
850
  sender: string;
@@ -973,13 +982,11 @@ type PacketVerifiedEventFilter$2 = TypedEventFilter<PacketVerifiedEvent$2>;
973
982
  interface ReceiveLibrarySetEventObject$4 {
974
983
  receiver: string;
975
984
  eid: number;
976
- oldLib: string;
977
985
  newLib: string;
978
986
  }
979
987
  type ReceiveLibrarySetEvent$4 = TypedEvent<[
980
988
  string,
981
989
  number,
982
- string,
983
990
  string
984
991
  ], ReceiveLibrarySetEventObject$4>;
985
992
  type ReceiveLibrarySetEventFilter$4 = TypedEventFilter<ReceiveLibrarySetEvent$4>;
@@ -1277,12 +1284,14 @@ interface ILayerZeroEndpointV2 extends BaseContract {
1277
1284
  ComposeDelivered(from?: null, to?: null, guid?: null, index?: null): ComposeDeliveredEventFilter$4;
1278
1285
  "ComposeSent(address,address,bytes32,uint16,bytes)"(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$4;
1279
1286
  ComposeSent(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$4;
1280
- "DefaultReceiveLibrarySet(uint32,address,address)"(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$4;
1281
- DefaultReceiveLibrarySet(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$4;
1287
+ "DefaultReceiveLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$4;
1288
+ DefaultReceiveLibrarySet(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$4;
1282
1289
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$4;
1283
1290
  DefaultReceiveLibraryTimeoutSet(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$4;
1284
1291
  "DefaultSendLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$4;
1285
1292
  DefaultSendLibrarySet(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$4;
1293
+ "DelegateSet(address,address)"(sender?: null, delegate?: null): DelegateSetEventFilter$2;
1294
+ DelegateSet(sender?: null, delegate?: null): DelegateSetEventFilter$2;
1286
1295
  "InboundNonceSkipped(uint32,bytes32,address,uint64)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$4;
1287
1296
  InboundNonceSkipped(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$4;
1288
1297
  "LibraryRegistered(address)"(newLib?: null): LibraryRegisteredEventFilter$4;
@@ -1303,8 +1312,8 @@ interface ILayerZeroEndpointV2 extends BaseContract {
1303
1312
  PacketSent(encodedPayload?: null, options?: null, sendLibrary?: null): PacketSentEventFilter$4;
1304
1313
  "PacketVerified(tuple,address,bytes32)"(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter$2;
1305
1314
  PacketVerified(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter$2;
1306
- "ReceiveLibrarySet(address,uint32,address,address)"(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$4;
1307
- ReceiveLibrarySet(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$4;
1315
+ "ReceiveLibrarySet(address,uint32,address)"(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$4;
1316
+ ReceiveLibrarySet(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$4;
1308
1317
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$4;
1309
1318
  ReceiveLibraryTimeoutSet(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$4;
1310
1319
  "SendLibrarySet(address,uint32,address)"(sender?: null, eid?: null, newLib?: null): SendLibrarySetEventFilter$4;
@@ -2057,11 +2066,11 @@ interface IMessageLibManagerInterface extends utils.Interface {
2057
2066
  decodeFunctionResult(functionFragment: "setReceiveLibraryTimeout", data: BytesLike): Result;
2058
2067
  decodeFunctionResult(functionFragment: "setSendLibrary", data: BytesLike): Result;
2059
2068
  events: {
2060
- "DefaultReceiveLibrarySet(uint32,address,address)": EventFragment;
2069
+ "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
2061
2070
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
2062
2071
  "DefaultSendLibrarySet(uint32,address)": EventFragment;
2063
2072
  "LibraryRegistered(address)": EventFragment;
2064
- "ReceiveLibrarySet(address,uint32,address,address)": EventFragment;
2073
+ "ReceiveLibrarySet(address,uint32,address)": EventFragment;
2065
2074
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
2066
2075
  "SendLibrarySet(address,uint32,address)": EventFragment;
2067
2076
  };
@@ -2075,12 +2084,10 @@ interface IMessageLibManagerInterface extends utils.Interface {
2075
2084
  }
2076
2085
  interface DefaultReceiveLibrarySetEventObject$3 {
2077
2086
  eid: number;
2078
- oldLib: string;
2079
2087
  newLib: string;
2080
2088
  }
2081
2089
  type DefaultReceiveLibrarySetEvent$3 = TypedEvent<[
2082
2090
  number,
2083
- string,
2084
2091
  string
2085
2092
  ], DefaultReceiveLibrarySetEventObject$3>;
2086
2093
  type DefaultReceiveLibrarySetEventFilter$3 = TypedEventFilter<DefaultReceiveLibrarySetEvent$3>;
@@ -2114,13 +2121,11 @@ type LibraryRegisteredEventFilter$3 = TypedEventFilter<LibraryRegisteredEvent$3>
2114
2121
  interface ReceiveLibrarySetEventObject$3 {
2115
2122
  receiver: string;
2116
2123
  eid: number;
2117
- oldLib: string;
2118
2124
  newLib: string;
2119
2125
  }
2120
2126
  type ReceiveLibrarySetEvent$3 = TypedEvent<[
2121
2127
  string,
2122
2128
  number,
2123
- string,
2124
2129
  string
2125
2130
  ], ReceiveLibrarySetEventObject$3>;
2126
2131
  type ReceiveLibrarySetEventFilter$3 = TypedEventFilter<ReceiveLibrarySetEvent$3>;
@@ -2287,16 +2292,16 @@ interface IMessageLibManager extends BaseContract {
2287
2292
  setSendLibrary(_oapp: PromiseOrValue<string>, _eid: PromiseOrValue<BigNumberish>, _newLib: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
2288
2293
  };
2289
2294
  filters: {
2290
- "DefaultReceiveLibrarySet(uint32,address,address)"(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$3;
2291
- DefaultReceiveLibrarySet(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$3;
2295
+ "DefaultReceiveLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$3;
2296
+ DefaultReceiveLibrarySet(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$3;
2292
2297
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$3;
2293
2298
  DefaultReceiveLibraryTimeoutSet(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$3;
2294
2299
  "DefaultSendLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$3;
2295
2300
  DefaultSendLibrarySet(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$3;
2296
2301
  "LibraryRegistered(address)"(newLib?: null): LibraryRegisteredEventFilter$3;
2297
2302
  LibraryRegistered(newLib?: null): LibraryRegisteredEventFilter$3;
2298
- "ReceiveLibrarySet(address,uint32,address,address)"(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$3;
2299
- ReceiveLibrarySet(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$3;
2303
+ "ReceiveLibrarySet(address,uint32,address)"(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$3;
2304
+ ReceiveLibrarySet(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$3;
2300
2305
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$3;
2301
2306
  ReceiveLibraryTimeoutSet(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$3;
2302
2307
  "SendLibrarySet(address,uint32,address)"(sender?: null, eid?: null, newLib?: null): SendLibrarySetEventFilter$3;
@@ -17607,9 +17612,10 @@ interface EndpointV2Interface extends utils.Interface {
17607
17612
  events: {
17608
17613
  "ComposeDelivered(address,address,bytes32,uint16)": EventFragment;
17609
17614
  "ComposeSent(address,address,bytes32,uint16,bytes)": EventFragment;
17610
- "DefaultReceiveLibrarySet(uint32,address,address)": EventFragment;
17615
+ "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
17611
17616
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
17612
17617
  "DefaultSendLibrarySet(uint32,address)": EventFragment;
17618
+ "DelegateSet(address,address)": EventFragment;
17613
17619
  "InboundNonceSkipped(uint32,bytes32,address,uint64)": EventFragment;
17614
17620
  "LibraryRegistered(address)": EventFragment;
17615
17621
  "LzComposeAlert(address,address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)": EventFragment;
@@ -17621,7 +17627,7 @@ interface EndpointV2Interface extends utils.Interface {
17621
17627
  "PacketNilified(uint32,bytes32,address,uint64,bytes32)": EventFragment;
17622
17628
  "PacketSent(bytes,bytes,address)": EventFragment;
17623
17629
  "PacketVerified(tuple,address,bytes32)": EventFragment;
17624
- "ReceiveLibrarySet(address,uint32,address,address)": EventFragment;
17630
+ "ReceiveLibrarySet(address,uint32,address)": EventFragment;
17625
17631
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
17626
17632
  "SendLibrarySet(address,uint32,address)": EventFragment;
17627
17633
  };
@@ -17630,6 +17636,7 @@ interface EndpointV2Interface extends utils.Interface {
17630
17636
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibrarySet"): EventFragment;
17631
17637
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibraryTimeoutSet"): EventFragment;
17632
17638
  getEvent(nameOrSignatureOrTopic: "DefaultSendLibrarySet"): EventFragment;
17639
+ getEvent(nameOrSignatureOrTopic: "DelegateSet"): EventFragment;
17633
17640
  getEvent(nameOrSignatureOrTopic: "InboundNonceSkipped"): EventFragment;
17634
17641
  getEvent(nameOrSignatureOrTopic: "LibraryRegistered"): EventFragment;
17635
17642
  getEvent(nameOrSignatureOrTopic: "LzComposeAlert"): EventFragment;
@@ -17675,12 +17682,10 @@ type ComposeSentEvent$2 = TypedEvent<[
17675
17682
  type ComposeSentEventFilter$2 = TypedEventFilter<ComposeSentEvent$2>;
17676
17683
  interface DefaultReceiveLibrarySetEventObject$2 {
17677
17684
  eid: number;
17678
- oldLib: string;
17679
17685
  newLib: string;
17680
17686
  }
17681
17687
  type DefaultReceiveLibrarySetEvent$2 = TypedEvent<[
17682
17688
  number,
17683
- string,
17684
17689
  string
17685
17690
  ], DefaultReceiveLibrarySetEventObject$2>;
17686
17691
  type DefaultReceiveLibrarySetEventFilter$2 = TypedEventFilter<DefaultReceiveLibrarySetEvent$2>;
@@ -17704,6 +17709,15 @@ type DefaultSendLibrarySetEvent$2 = TypedEvent<[
17704
17709
  string
17705
17710
  ], DefaultSendLibrarySetEventObject$2>;
17706
17711
  type DefaultSendLibrarySetEventFilter$2 = TypedEventFilter<DefaultSendLibrarySetEvent$2>;
17712
+ interface DelegateSetEventObject$1 {
17713
+ sender: string;
17714
+ delegate: string;
17715
+ }
17716
+ type DelegateSetEvent$1 = TypedEvent<[
17717
+ string,
17718
+ string
17719
+ ], DelegateSetEventObject$1>;
17720
+ type DelegateSetEventFilter$1 = TypedEventFilter<DelegateSetEvent$1>;
17707
17721
  interface InboundNonceSkippedEventObject$2 {
17708
17722
  srcEid: number;
17709
17723
  sender: string;
@@ -17850,13 +17864,11 @@ type PacketVerifiedEventFilter$1 = TypedEventFilter<PacketVerifiedEvent$1>;
17850
17864
  interface ReceiveLibrarySetEventObject$2 {
17851
17865
  receiver: string;
17852
17866
  eid: number;
17853
- oldLib: string;
17854
17867
  newLib: string;
17855
17868
  }
17856
17869
  type ReceiveLibrarySetEvent$2 = TypedEvent<[
17857
17870
  string,
17858
17871
  number,
17859
- string,
17860
17872
  string
17861
17873
  ], ReceiveLibrarySetEventObject$2>;
17862
17874
  type ReceiveLibrarySetEventFilter$2 = TypedEventFilter<ReceiveLibrarySetEvent$2>;
@@ -18213,12 +18225,14 @@ interface EndpointV2 extends BaseContract {
18213
18225
  ComposeDelivered(from?: null, to?: null, guid?: null, index?: null): ComposeDeliveredEventFilter$2;
18214
18226
  "ComposeSent(address,address,bytes32,uint16,bytes)"(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$2;
18215
18227
  ComposeSent(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$2;
18216
- "DefaultReceiveLibrarySet(uint32,address,address)"(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$2;
18217
- DefaultReceiveLibrarySet(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$2;
18228
+ "DefaultReceiveLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$2;
18229
+ DefaultReceiveLibrarySet(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$2;
18218
18230
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$2;
18219
18231
  DefaultReceiveLibraryTimeoutSet(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$2;
18220
18232
  "DefaultSendLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$2;
18221
18233
  DefaultSendLibrarySet(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$2;
18234
+ "DelegateSet(address,address)"(sender?: null, delegate?: null): DelegateSetEventFilter$1;
18235
+ DelegateSet(sender?: null, delegate?: null): DelegateSetEventFilter$1;
18222
18236
  "InboundNonceSkipped(uint32,bytes32,address,uint64)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$2;
18223
18237
  InboundNonceSkipped(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$2;
18224
18238
  "LibraryRegistered(address)"(newLib?: null): LibraryRegisteredEventFilter$2;
@@ -18241,8 +18255,8 @@ interface EndpointV2 extends BaseContract {
18241
18255
  PacketSent(encodedPayload?: null, options?: null, sendLibrary?: null): PacketSentEventFilter$1;
18242
18256
  "PacketVerified(tuple,address,bytes32)"(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter$1;
18243
18257
  PacketVerified(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter$1;
18244
- "ReceiveLibrarySet(address,uint32,address,address)"(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$2;
18245
- ReceiveLibrarySet(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$2;
18258
+ "ReceiveLibrarySet(address,uint32,address)"(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$2;
18259
+ ReceiveLibrarySet(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$2;
18246
18260
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$2;
18247
18261
  ReceiveLibraryTimeoutSet(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$2;
18248
18262
  "SendLibrarySet(address,uint32,address)"(sender?: null, eid?: null, newLib?: null): SendLibrarySetEventFilter$2;
@@ -18796,9 +18810,10 @@ interface EndpointV2AltInterface extends utils.Interface {
18796
18810
  events: {
18797
18811
  "ComposeDelivered(address,address,bytes32,uint16)": EventFragment;
18798
18812
  "ComposeSent(address,address,bytes32,uint16,bytes)": EventFragment;
18799
- "DefaultReceiveLibrarySet(uint32,address,address)": EventFragment;
18813
+ "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
18800
18814
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
18801
18815
  "DefaultSendLibrarySet(uint32,address)": EventFragment;
18816
+ "DelegateSet(address,address)": EventFragment;
18802
18817
  "InboundNonceSkipped(uint32,bytes32,address,uint64)": EventFragment;
18803
18818
  "LibraryRegistered(address)": EventFragment;
18804
18819
  "LzComposeAlert(address,address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)": EventFragment;
@@ -18810,7 +18825,7 @@ interface EndpointV2AltInterface extends utils.Interface {
18810
18825
  "PacketNilified(uint32,bytes32,address,uint64,bytes32)": EventFragment;
18811
18826
  "PacketSent(bytes,bytes,address)": EventFragment;
18812
18827
  "PacketVerified(tuple,address,bytes32)": EventFragment;
18813
- "ReceiveLibrarySet(address,uint32,address,address)": EventFragment;
18828
+ "ReceiveLibrarySet(address,uint32,address)": EventFragment;
18814
18829
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
18815
18830
  "SendLibrarySet(address,uint32,address)": EventFragment;
18816
18831
  };
@@ -18819,6 +18834,7 @@ interface EndpointV2AltInterface extends utils.Interface {
18819
18834
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibrarySet"): EventFragment;
18820
18835
  getEvent(nameOrSignatureOrTopic: "DefaultReceiveLibraryTimeoutSet"): EventFragment;
18821
18836
  getEvent(nameOrSignatureOrTopic: "DefaultSendLibrarySet"): EventFragment;
18837
+ getEvent(nameOrSignatureOrTopic: "DelegateSet"): EventFragment;
18822
18838
  getEvent(nameOrSignatureOrTopic: "InboundNonceSkipped"): EventFragment;
18823
18839
  getEvent(nameOrSignatureOrTopic: "LibraryRegistered"): EventFragment;
18824
18840
  getEvent(nameOrSignatureOrTopic: "LzComposeAlert"): EventFragment;
@@ -18864,12 +18880,10 @@ type ComposeSentEvent$1 = TypedEvent<[
18864
18880
  type ComposeSentEventFilter$1 = TypedEventFilter<ComposeSentEvent$1>;
18865
18881
  interface DefaultReceiveLibrarySetEventObject$1 {
18866
18882
  eid: number;
18867
- oldLib: string;
18868
18883
  newLib: string;
18869
18884
  }
18870
18885
  type DefaultReceiveLibrarySetEvent$1 = TypedEvent<[
18871
18886
  number,
18872
- string,
18873
18887
  string
18874
18888
  ], DefaultReceiveLibrarySetEventObject$1>;
18875
18889
  type DefaultReceiveLibrarySetEventFilter$1 = TypedEventFilter<DefaultReceiveLibrarySetEvent$1>;
@@ -18893,6 +18907,15 @@ type DefaultSendLibrarySetEvent$1 = TypedEvent<[
18893
18907
  string
18894
18908
  ], DefaultSendLibrarySetEventObject$1>;
18895
18909
  type DefaultSendLibrarySetEventFilter$1 = TypedEventFilter<DefaultSendLibrarySetEvent$1>;
18910
+ interface DelegateSetEventObject {
18911
+ sender: string;
18912
+ delegate: string;
18913
+ }
18914
+ type DelegateSetEvent = TypedEvent<[
18915
+ string,
18916
+ string
18917
+ ], DelegateSetEventObject>;
18918
+ type DelegateSetEventFilter = TypedEventFilter<DelegateSetEvent>;
18896
18919
  interface InboundNonceSkippedEventObject$1 {
18897
18920
  srcEid: number;
18898
18921
  sender: string;
@@ -19039,13 +19062,11 @@ type PacketVerifiedEventFilter = TypedEventFilter<PacketVerifiedEvent>;
19039
19062
  interface ReceiveLibrarySetEventObject$1 {
19040
19063
  receiver: string;
19041
19064
  eid: number;
19042
- oldLib: string;
19043
19065
  newLib: string;
19044
19066
  }
19045
19067
  type ReceiveLibrarySetEvent$1 = TypedEvent<[
19046
19068
  string,
19047
19069
  number,
19048
- string,
19049
19070
  string
19050
19071
  ], ReceiveLibrarySetEventObject$1>;
19051
19072
  type ReceiveLibrarySetEventFilter$1 = TypedEventFilter<ReceiveLibrarySetEvent$1>;
@@ -19402,12 +19423,14 @@ interface EndpointV2Alt extends BaseContract {
19402
19423
  ComposeDelivered(from?: null, to?: null, guid?: null, index?: null): ComposeDeliveredEventFilter$1;
19403
19424
  "ComposeSent(address,address,bytes32,uint16,bytes)"(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$1;
19404
19425
  ComposeSent(from?: null, to?: null, guid?: null, index?: null, message?: null): ComposeSentEventFilter$1;
19405
- "DefaultReceiveLibrarySet(uint32,address,address)"(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$1;
19406
- DefaultReceiveLibrarySet(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$1;
19426
+ "DefaultReceiveLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$1;
19427
+ DefaultReceiveLibrarySet(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter$1;
19407
19428
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$1;
19408
19429
  DefaultReceiveLibraryTimeoutSet(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter$1;
19409
19430
  "DefaultSendLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$1;
19410
19431
  DefaultSendLibrarySet(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter$1;
19432
+ "DelegateSet(address,address)"(sender?: null, delegate?: null): DelegateSetEventFilter;
19433
+ DelegateSet(sender?: null, delegate?: null): DelegateSetEventFilter;
19411
19434
  "InboundNonceSkipped(uint32,bytes32,address,uint64)"(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$1;
19412
19435
  InboundNonceSkipped(srcEid?: null, sender?: null, receiver?: null, nonce?: null): InboundNonceSkippedEventFilter$1;
19413
19436
  "LibraryRegistered(address)"(newLib?: null): LibraryRegisteredEventFilter$1;
@@ -19430,8 +19453,8 @@ interface EndpointV2Alt extends BaseContract {
19430
19453
  PacketSent(encodedPayload?: null, options?: null, sendLibrary?: null): PacketSentEventFilter;
19431
19454
  "PacketVerified(tuple,address,bytes32)"(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter;
19432
19455
  PacketVerified(origin?: null, receiver?: null, payloadHash?: null): PacketVerifiedEventFilter;
19433
- "ReceiveLibrarySet(address,uint32,address,address)"(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$1;
19434
- ReceiveLibrarySet(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter$1;
19456
+ "ReceiveLibrarySet(address,uint32,address)"(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$1;
19457
+ ReceiveLibrarySet(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter$1;
19435
19458
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$1;
19436
19459
  ReceiveLibraryTimeoutSet(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter$1;
19437
19460
  "SendLibrarySet(address,uint32,address)"(sender?: null, eid?: null, newLib?: null): SendLibrarySetEventFilter$1;
@@ -20708,12 +20731,12 @@ interface MessageLibManagerInterface extends utils.Interface {
20708
20731
  decodeFunctionResult(functionFragment: "setSendLibrary", data: BytesLike): Result;
20709
20732
  decodeFunctionResult(functionFragment: "transferOwnership", data: BytesLike): Result;
20710
20733
  events: {
20711
- "DefaultReceiveLibrarySet(uint32,address,address)": EventFragment;
20734
+ "DefaultReceiveLibrarySet(uint32,address)": EventFragment;
20712
20735
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)": EventFragment;
20713
20736
  "DefaultSendLibrarySet(uint32,address)": EventFragment;
20714
20737
  "LibraryRegistered(address)": EventFragment;
20715
20738
  "OwnershipTransferred(address,address)": EventFragment;
20716
- "ReceiveLibrarySet(address,uint32,address,address)": EventFragment;
20739
+ "ReceiveLibrarySet(address,uint32,address)": EventFragment;
20717
20740
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)": EventFragment;
20718
20741
  "SendLibrarySet(address,uint32,address)": EventFragment;
20719
20742
  };
@@ -20728,12 +20751,10 @@ interface MessageLibManagerInterface extends utils.Interface {
20728
20751
  }
20729
20752
  interface DefaultReceiveLibrarySetEventObject {
20730
20753
  eid: number;
20731
- oldLib: string;
20732
20754
  newLib: string;
20733
20755
  }
20734
20756
  type DefaultReceiveLibrarySetEvent = TypedEvent<[
20735
20757
  number,
20736
- string,
20737
20758
  string
20738
20759
  ], DefaultReceiveLibrarySetEventObject>;
20739
20760
  type DefaultReceiveLibrarySetEventFilter = TypedEventFilter<DefaultReceiveLibrarySetEvent>;
@@ -20776,13 +20797,11 @@ type OwnershipTransferredEventFilter$4 = TypedEventFilter<OwnershipTransferredEv
20776
20797
  interface ReceiveLibrarySetEventObject {
20777
20798
  receiver: string;
20778
20799
  eid: number;
20779
- oldLib: string;
20780
20800
  newLib: string;
20781
20801
  }
20782
20802
  type ReceiveLibrarySetEvent = TypedEvent<[
20783
20803
  string,
20784
20804
  number,
20785
- string,
20786
20805
  string
20787
20806
  ], ReceiveLibrarySetEventObject>;
20788
20807
  type ReceiveLibrarySetEventFilter = TypedEventFilter<ReceiveLibrarySetEvent>;
@@ -20976,8 +20995,8 @@ interface MessageLibManager extends BaseContract {
20976
20995
  transferOwnership(newOwner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
20977
20996
  };
20978
20997
  filters: {
20979
- "DefaultReceiveLibrarySet(uint32,address,address)"(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter;
20980
- DefaultReceiveLibrarySet(eid?: null, oldLib?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter;
20998
+ "DefaultReceiveLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter;
20999
+ DefaultReceiveLibrarySet(eid?: null, newLib?: null): DefaultReceiveLibrarySetEventFilter;
20981
21000
  "DefaultReceiveLibraryTimeoutSet(uint32,address,uint256)"(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter;
20982
21001
  DefaultReceiveLibraryTimeoutSet(eid?: null, oldLib?: null, expiry?: null): DefaultReceiveLibraryTimeoutSetEventFilter;
20983
21002
  "DefaultSendLibrarySet(uint32,address)"(eid?: null, newLib?: null): DefaultSendLibrarySetEventFilter;
@@ -20986,8 +21005,8 @@ interface MessageLibManager extends BaseContract {
20986
21005
  LibraryRegistered(newLib?: null): LibraryRegisteredEventFilter;
20987
21006
  "OwnershipTransferred(address,address)"(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter$4;
20988
21007
  OwnershipTransferred(previousOwner?: PromiseOrValue<string> | null, newOwner?: PromiseOrValue<string> | null): OwnershipTransferredEventFilter$4;
20989
- "ReceiveLibrarySet(address,uint32,address,address)"(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter;
20990
- ReceiveLibrarySet(receiver?: null, eid?: null, oldLib?: null, newLib?: null): ReceiveLibrarySetEventFilter;
21008
+ "ReceiveLibrarySet(address,uint32,address)"(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter;
21009
+ ReceiveLibrarySet(receiver?: null, eid?: null, newLib?: null): ReceiveLibrarySetEventFilter;
20991
21010
  "ReceiveLibraryTimeoutSet(address,uint32,address,uint256)"(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter;
20992
21011
  ReceiveLibraryTimeoutSet(receiver?: null, eid?: null, oldLib?: null, timeout?: null): ReceiveLibraryTimeoutSetEventFilter;
20993
21012
  "SendLibrarySet(address,uint32,address)"(sender?: null, eid?: null, newLib?: null): SendLibrarySetEventFilter;
@@ -24044,11 +24063,6 @@ declare class ILayerZeroEndpointV2__factory {
24044
24063
  readonly internalType: "uint32";
24045
24064
  readonly name: "eid";
24046
24065
  readonly type: "uint32";
24047
- }, {
24048
- readonly indexed: false;
24049
- readonly internalType: "address";
24050
- readonly name: "oldLib";
24051
- readonly type: "address";
24052
24066
  }, {
24053
24067
  readonly indexed: false;
24054
24068
  readonly internalType: "address";
@@ -24092,6 +24106,21 @@ declare class ILayerZeroEndpointV2__factory {
24092
24106
  }];
24093
24107
  readonly name: "DefaultSendLibrarySet";
24094
24108
  readonly type: "event";
24109
+ }, {
24110
+ readonly anonymous: false;
24111
+ readonly inputs: readonly [{
24112
+ readonly indexed: false;
24113
+ readonly internalType: "address";
24114
+ readonly name: "sender";
24115
+ readonly type: "address";
24116
+ }, {
24117
+ readonly indexed: false;
24118
+ readonly internalType: "address";
24119
+ readonly name: "delegate";
24120
+ readonly type: "address";
24121
+ }];
24122
+ readonly name: "DelegateSet";
24123
+ readonly type: "event";
24095
24124
  }, {
24096
24125
  readonly anonymous: false;
24097
24126
  readonly inputs: readonly [{
@@ -24408,11 +24437,6 @@ declare class ILayerZeroEndpointV2__factory {
24408
24437
  readonly internalType: "uint32";
24409
24438
  readonly name: "eid";
24410
24439
  readonly type: "uint32";
24411
- }, {
24412
- readonly indexed: false;
24413
- readonly internalType: "address";
24414
- readonly name: "oldLib";
24415
- readonly type: "address";
24416
24440
  }, {
24417
24441
  readonly indexed: false;
24418
24442
  readonly internalType: "address";
@@ -25908,11 +25932,6 @@ declare class IMessageLibManager__factory {
25908
25932
  readonly internalType: "uint32";
25909
25933
  readonly name: "eid";
25910
25934
  readonly type: "uint32";
25911
- }, {
25912
- readonly indexed: false;
25913
- readonly internalType: "address";
25914
- readonly name: "oldLib";
25915
- readonly type: "address";
25916
25935
  }, {
25917
25936
  readonly indexed: false;
25918
25937
  readonly internalType: "address";
@@ -25978,11 +25997,6 @@ declare class IMessageLibManager__factory {
25978
25997
  readonly internalType: "uint32";
25979
25998
  readonly name: "eid";
25980
25999
  readonly type: "uint32";
25981
- }, {
25982
- readonly indexed: false;
25983
- readonly internalType: "address";
25984
- readonly name: "oldLib";
25985
- readonly type: "address";
25986
26000
  }, {
25987
26001
  readonly indexed: false;
25988
26002
  readonly internalType: "address";
@@ -27627,7 +27641,7 @@ declare class BlockedMessageLib__factory extends ContractFactory {
27627
27641
  }): TransactionRequest;
27628
27642
  attach(address: string): BlockedMessageLib;
27629
27643
  connect(signer: Signer): BlockedMessageLib__factory;
27630
- static readonly bytecode = "0x608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea264697066735822122093dd196808f6be235b3a1fbe17f1b527c6caf755f44b0900d5937f3e0d93500964736f6c63430008160033";
27644
+ static readonly bytecode = "0x608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea2646970667358221220c9c0506538080982fd403c3c32d7540c9fed117f863df9d5342f129ba868c53b64736f6c63430008160033";
27631
27645
  static readonly abi: readonly [{
27632
27646
  readonly inputs: readonly [];
27633
27647
  readonly name: "NotImplemented";
@@ -27707,7 +27721,7 @@ declare class SimpleMessageLib__factory extends ContractFactory {
27707
27721
  }): TransactionRequest;
27708
27722
  attach(address: string): SimpleMessageLib;
27709
27723
  connect(signer: Signer): SimpleMessageLib__factory;
27710
- static readonly bytecode = "0x60e06040523480156200001157600080fd5b50604051620020033803806200200383398101604081905262000034916200013f565b6200003f33620000d2565b6001600160a01b03808316608081905290821660a0526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000091573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b7919062000177565b63ffffffff1660c052505060636002556064600355620001a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013a57600080fd5b919050565b600080604083850312156200015357600080fd5b6200015e8362000122565b91506200016e6020840162000122565b90509250929050565b6000602082840312156200018a57600080fd5b815163ffffffff811681146200019f57600080fd5b9392505050565b60805160a05160c051611e11620001f260003960006103d40152600061034301526000818161030f015281816106ce015281816107fd01528181610a450152610d070152611e116000f3fe6080604052600436106101845760003560e01c8063715018a6116100d6578063996f79c01161007f578063dabca06311610059578063dabca063146104ff578063f2fde38b1461051f578063fd9be5221461053f5761018b565b8063996f79c01461049c578063aec336e6146104b2578063d80e9bd9146104d25761018b565b80638da5cb5b116100b05780638da5cb5b1461042d5780638f58aa7a1461045857806390953238146104785761018b565b8063715018a6146103ad57806372607537146103c257806372d713221461040b5761018b565b80634389e58f1161013857806361d027b31161011257806361d027b3146103315780636251b637146103655780636750cd4c1461038c5761018b565b80634389e58f146102a257806354fd4d50146102d15780635e280f11146102fd5761018b565b80631881d94d116101695780631881d94d146102145780631c7c294e14610230578063334993ff146102825761018b565b806301ffc9a7146101bd57806312cc947f146101f25761018b565b3661018b57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156101c957600080fd5b506101dd6101d8366004611451565b61055f565b60405190151581526020015b60405180910390f35b3480156101fe57600080fd5b5061021261020d3660046114d5565b6105f8565b005b34801561022057600080fd5b5060026040516101e99190611517565b34801561023c57600080fd5b5060015461025d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e9565b34801561028e57600080fd5b5061021261029d366004611558565b6107d1565b3480156102ae57600080fd5b506102c26102bd3660046116a3565b6107e4565b6040516101e993929190611789565b3480156102dd57600080fd5b5060408051600080825260208201526002918101919091526060016101e9565b34801561030957600080fd5b5061025d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033d57600080fd5b5061025d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037157600080fd5b5061037a600181565b60405160ff90911681526020016101e9565b34801561039857600080fd5b506101dd6103a73660046117e2565b50600190565b3480156103b957600080fd5b5061021261094a565b3480156103ce57600080fd5b506103f67f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101e9565b34801561041757600080fd5b5061042061095e565b6040516101e991906117fd565b34801561043957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661025d565b34801561046457600080fd5b5061021261047336600461183d565b6109ec565b34801561048457600080fd5b5061048e60025481565b6040519081526020016101e9565b3480156104a857600080fd5b5061048e60035481565b3480156104be57600080fd5b506102126104cd366004611869565b610b47565b3480156104de57600080fd5b506104f26104ed366004611886565b610b96565b6040516101e99190611902565b34801561050b57600080fd5b5061021261051a366004611919565b610bda565b34801561052b57600080fd5b5061021261053a366004611869565b610bf2565b34801561054b57600080fd5b5061021261055a36600461183d565b610cae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f025840000000000000000000000000000000000000000000000000000000014806105f257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1615801590610637575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561066e576040517f70b216ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060405180606001604052806106858585610da1565b63ffffffff16815260200161069a8585610dc4565b81526020016106a98585610de4565b67ffffffffffffffff169052905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a825d747826106fe8686610e07565b6107088787610e19565b60405161071692919061194e565b6040805191829003822060e086901b7fffffffff00000000000000000000000000000000000000000000000000000000168352845163ffffffff1660048401526020850151602484015293015167ffffffffffffffff16604482015273ffffffffffffffffffffffffffffffffffffffff9091166064820152608481019190915260a401600060405180830381600087803b1580156107b457600080fd5b505af11580156107c8573d6000803e3d6000fd5b50505050505050565b6107d9610e35565b600391909155600255565b60408051808201909152600080825260208201526060807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461086a576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087b61087687611976565b610eb6565b9150845160001461088c5784610918565b6004805461089990611a14565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590611a14565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b50505050505b9050604051806040016040528060035481526020018561093957600061093d565b6002545b9052969195509350915050565b610952610e35565b61095c6000610f1b565b565b6004805461096b90611a14565b80601f016020809104026020016040519081016040528092919081815260200182805461099790611a14565b80156109e45780601f106109b9576101008083540402835291602001916109e4565b820191906000526020600020905b8154815290600101906020018083116109c757829003601f168201915b505050505081565b6109f4610e35565b73ffffffffffffffffffffffffffffffffffffffff8216610a41576040517f3d3496e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611a61565b905073ffffffffffffffffffffffffffffffffffffffff8116610b21576040517f54c1781b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4273ffffffffffffffffffffffffffffffffffffffff82168484610f90565b505050565b610b4f610e35565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60408051808201909152600080825260208201526040518060400160405280600354815260200183610bc9576000610bcd565b6002545b905290505b949350505050565b610be2610e35565b6004610bee8282611ace565b5050565b610bfa610e35565b73ffffffffffffffffffffffffffffffffffffffff8116610ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610cab81610f1b565b50565b610cb6610e35565b73ffffffffffffffffffffffffffffffffffffffff8216610d03576040517f3d3496e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190611a61565b9050610b4281848461101d565b6000610db1600d60098486611be8565b610dba91611c12565b60e01c9392505050565b6000610dd4602d600d8486611be8565b610ddd91611c5a565b9392505050565b6000610df4600960018486611be8565b610dfd91611c96565b60c01c9392505050565b6000610ddd610e16848461104d565b90565b366000610e298360518187611be8565b915091505b9250929050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c99565b8051602080830151604080850151606080870151608088015160a089015160c08a015195519398610f05986001989197919673ffffffffffffffffffffffffffffffffffffffff169501611cdc565b6040516020818303038152906040529050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610b4290849061105d565b73ffffffffffffffffffffffffffffffffffffffff831661104257610b42828261116c565b610b42838383611272565b6000610dd4605160318486611be8565b60006110bf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112e09092919063ffffffff16565b90508051600014806110e05750808060200190518101906110e09190611da2565b610b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c99565b73ffffffffffffffffffffffffffffffffffffffff82166111b9576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611213576040519150601f19603f3d011682016040523d82523d6000602084013e611218565b606091505b5050905080610b42576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c99565b73ffffffffffffffffffffffffffffffffffffffff82166112bf576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4273ffffffffffffffffffffffffffffffffffffffff84168383610f90565b6060610bd28484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113149190611dbf565b60006040518083038185875af1925050503d8060008114611351576040519150601f19603f3d011682016040523d82523d6000602084013e611356565b606091505b509150915061136787838387611372565b979650505050505050565b606083156114085782516000036114015773ffffffffffffffffffffffffffffffffffffffff85163b611401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c99565b5081610bd2565b610bd2838381511561141d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9991906117fd565b60006020828403121561146357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ddd57600080fd5b60008083601f8401126114a557600080fd5b50813567ffffffffffffffff8111156114bd57600080fd5b602083019150836020828501011115610e2e57600080fd5b600080602083850312156114e857600080fd5b823567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611493565b90969095509350505050565b6020810160038310611552577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561156b57600080fd5b50508035926020909101359150565b600060e0828403121561158c57600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156115e4576115e4611592565b60405290565b600082601f8301126115fb57600080fd5b813567ffffffffffffffff8082111561161657611616611592565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561165c5761165c611592565b8160405283815286602085880101111561167557600080fd5b836020870160208301376000602085830101528094505050505092915050565b8015158114610cab57600080fd5b6000806000606084860312156116b857600080fd5b833567ffffffffffffffff808211156116d057600080fd5b6116dc8783880161157a565b945060208601359150808211156116f257600080fd5b506116ff868287016115ea565b925050604084013561171081611695565b809150509250925092565b60005b8381101561173657818101518382015260200161171e565b50506000910152565b6000815180845261175781602086016020860161171b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b83518152602080850151908201526080604082015260006117ad608083018561173f565b82810360608401526117bf818561173f565b9695505050505050565b803563ffffffff811681146117dd57600080fd5b919050565b6000602082840312156117f457600080fd5b610ddd826117c9565b602081526000610ddd602083018461173f565b73ffffffffffffffffffffffffffffffffffffffff81168114610cab57600080fd5b80356117dd81611810565b6000806040838503121561185057600080fd5b823561185b81611810565b946020939093013593505050565b60006020828403121561187b57600080fd5b8135610ddd81611810565b6000806000806060858703121561189c57600080fd5b843567ffffffffffffffff808211156118b457600080fd5b6118c08883890161157a565b955060208701359150808211156118d657600080fd5b506118e387828801611493565b90945092505060408501356118f781611695565b939692955090935050565b8151815260208083015190820152604081016105f2565b60006020828403121561192b57600080fd5b813567ffffffffffffffff81111561194257600080fd5b610bd2848285016115ea565b8183823760009101908152919050565b803567ffffffffffffffff811681146117dd57600080fd5b600060e0823603121561198857600080fd5b6119906115c1565b6119998361195e565b81526119a7602084016117c9565b60208201526119b860408401611832565b60408201526119c9606084016117c9565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff8111156119fc57600080fd5b611a08368286016115ea565b60c08301525092915050565b600181811c90821680611a2857607f821691505b60208210810361158c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215611a7357600080fd5b8151610ddd81611810565b601f821115610b42576000816000526020600020601f850160051c81016020861015611aa75750805b601f850160051c820191505b81811015611ac657828155600101611ab3565b505050505050565b815167ffffffffffffffff811115611ae857611ae8611592565b611afc81611af68454611a14565b84611a7e565b602080601f831160018114611b4f5760008415611b195750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611ac6565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611b9c57888601518255948401946001909101908401611b7d565b5085821015611bd857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008085851115611bf857600080fd5b83861115611c0557600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611c525780818660040360031b1b83161692505b505092915050565b803560208310156105f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015611c525760089490940360031b84901b1690921692915050565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b1681527fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b16600182015260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b16600984015287600d840152808760e01b16602d840152508460318301528360518301528251611d8e81607185016020870161171b565b919091016071019998505050505050505050565b600060208284031215611db457600080fd5b8151610ddd81611695565b60008251611dd181846020870161171b565b919091019291505056fea264697066735822122066368181acc5f2fb6381dcdfa35e30c8ee692a8db09867e4986301f8fd9756e264736f6c63430008160033";
27724
+ static readonly bytecode = "0x60e06040523480156200001157600080fd5b50604051620020033803806200200383398101604081905262000034916200013f565b6200003f33620000d2565b6001600160a01b03808316608081905290821660a0526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000091573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b7919062000177565b63ffffffff1660c052505060636002556064600355620001a6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013a57600080fd5b919050565b600080604083850312156200015357600080fd5b6200015e8362000122565b91506200016e6020840162000122565b90509250929050565b6000602082840312156200018a57600080fd5b815163ffffffff811681146200019f57600080fd5b9392505050565b60805160a05160c051611e11620001f260003960006103d40152600061034301526000818161030f015281816106ce015281816107fd01528181610a450152610d070152611e116000f3fe6080604052600436106101845760003560e01c8063715018a6116100d6578063996f79c01161007f578063dabca06311610059578063dabca063146104ff578063f2fde38b1461051f578063fd9be5221461053f5761018b565b8063996f79c01461049c578063aec336e6146104b2578063d80e9bd9146104d25761018b565b80638da5cb5b116100b05780638da5cb5b1461042d5780638f58aa7a1461045857806390953238146104785761018b565b8063715018a6146103ad57806372607537146103c257806372d713221461040b5761018b565b80634389e58f1161013857806361d027b31161011257806361d027b3146103315780636251b637146103655780636750cd4c1461038c5761018b565b80634389e58f146102a257806354fd4d50146102d15780635e280f11146102fd5761018b565b80631881d94d116101695780631881d94d146102145780631c7c294e14610230578063334993ff146102825761018b565b806301ffc9a7146101bd57806312cc947f146101f25761018b565b3661018b57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3480156101c957600080fd5b506101dd6101d8366004611451565b61055f565b60405190151581526020015b60405180910390f35b3480156101fe57600080fd5b5061021261020d3660046114d5565b6105f8565b005b34801561022057600080fd5b5060026040516101e99190611517565b34801561023c57600080fd5b5060015461025d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e9565b34801561028e57600080fd5b5061021261029d366004611558565b6107d1565b3480156102ae57600080fd5b506102c26102bd3660046116a3565b6107e4565b6040516101e993929190611789565b3480156102dd57600080fd5b5060408051600080825260208201526002918101919091526060016101e9565b34801561030957600080fd5b5061025d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561033d57600080fd5b5061025d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037157600080fd5b5061037a600181565b60405160ff90911681526020016101e9565b34801561039857600080fd5b506101dd6103a73660046117e2565b50600190565b3480156103b957600080fd5b5061021261094a565b3480156103ce57600080fd5b506103f67f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101e9565b34801561041757600080fd5b5061042061095e565b6040516101e991906117fd565b34801561043957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661025d565b34801561046457600080fd5b5061021261047336600461183d565b6109ec565b34801561048457600080fd5b5061048e60025481565b6040519081526020016101e9565b3480156104a857600080fd5b5061048e60035481565b3480156104be57600080fd5b506102126104cd366004611869565b610b47565b3480156104de57600080fd5b506104f26104ed366004611886565b610b96565b6040516101e99190611902565b34801561050b57600080fd5b5061021261051a366004611919565b610bda565b34801561052b57600080fd5b5061021261053a366004611869565b610bf2565b34801561054b57600080fd5b5061021261055a36600461183d565b610cae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f025840000000000000000000000000000000000000000000000000000000014806105f257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff1615801590610637575060015473ffffffffffffffffffffffffffffffffffffffff163314155b1561066e576040517f70b216ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060405180606001604052806106858585610da1565b63ffffffff16815260200161069a8585610dc4565b81526020016106a98585610de4565b67ffffffffffffffff169052905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a825d747826106fe8686610e07565b6107088787610e19565b60405161071692919061194e565b6040805191829003822060e086901b7fffffffff00000000000000000000000000000000000000000000000000000000168352845163ffffffff1660048401526020850151602484015293015167ffffffffffffffff16604482015273ffffffffffffffffffffffffffffffffffffffff9091166064820152608481019190915260a401600060405180830381600087803b1580156107b457600080fd5b505af11580156107c8573d6000803e3d6000fd5b50505050505050565b6107d9610e35565b600391909155600255565b60408051808201909152600080825260208201526060807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461086a576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087b61087687611976565b610eb6565b9150845160001461088c5784610918565b6004805461089990611a14565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590611a14565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b50505050505b9050604051806040016040528060035481526020018561093957600061093d565b6002545b9052969195509350915050565b610952610e35565b61095c6000610f1b565b565b6004805461096b90611a14565b80601f016020809104026020016040519081016040528092919081815260200182805461099790611a14565b80156109e45780601f106109b9576101008083540402835291602001916109e4565b820191906000526020600020905b8154815290600101906020018083116109c757829003601f168201915b505050505081565b6109f4610e35565b73ffffffffffffffffffffffffffffffffffffffff8216610a41576040517f3d3496e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611a61565b905073ffffffffffffffffffffffffffffffffffffffff8116610b21576040517f54c1781b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4273ffffffffffffffffffffffffffffffffffffffff82168484610f90565b505050565b610b4f610e35565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60408051808201909152600080825260208201526040518060400160405280600354815260200183610bc9576000610bcd565b6002545b905290505b949350505050565b610be2610e35565b6004610bee8282611ace565b5050565b610bfa610e35565b73ffffffffffffffffffffffffffffffffffffffff8116610ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610cab81610f1b565b50565b610cb6610e35565b73ffffffffffffffffffffffffffffffffffffffff8216610d03576040517f3d3496e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d949190611a61565b9050610b4281848461101d565b6000610db1600d60098486611be8565b610dba91611c12565b60e01c9392505050565b6000610dd4602d600d8486611be8565b610ddd91611c5a565b9392505050565b6000610df4600960018486611be8565b610dfd91611c96565b60c01c9392505050565b6000610ddd610e16848461104d565b90565b366000610e298360518187611be8565b915091505b9250929050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c99565b8051602080830151604080850151606080870151608088015160a089015160c08a015195519398610f05986001989197919673ffffffffffffffffffffffffffffffffffffffff169501611cdc565b6040516020818303038152906040529050919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610b4290849061105d565b73ffffffffffffffffffffffffffffffffffffffff831661104257610b42828261116c565b610b42838383611272565b6000610dd4605160318486611be8565b60006110bf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112e09092919063ffffffff16565b90508051600014806110e05750808060200190518101906110e09190611da2565b610b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610c99565b73ffffffffffffffffffffffffffffffffffffffff82166111b9576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611213576040519150601f19603f3d011682016040523d82523d6000602084013e611218565b606091505b5050905080610b42576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c99565b73ffffffffffffffffffffffffffffffffffffffff82166112bf576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4273ffffffffffffffffffffffffffffffffffffffff84168383610f90565b6060610bd28484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113149190611dbf565b60006040518083038185875af1925050503d8060008114611351576040519150601f19603f3d011682016040523d82523d6000602084013e611356565b606091505b509150915061136787838387611372565b979650505050505050565b606083156114085782516000036114015773ffffffffffffffffffffffffffffffffffffffff85163b611401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c99565b5081610bd2565b610bd2838381511561141d5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9991906117fd565b60006020828403121561146357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610ddd57600080fd5b60008083601f8401126114a557600080fd5b50813567ffffffffffffffff8111156114bd57600080fd5b602083019150836020828501011115610e2e57600080fd5b600080602083850312156114e857600080fd5b823567ffffffffffffffff8111156114ff57600080fd5b61150b85828601611493565b90969095509350505050565b6020810160038310611552577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000806040838503121561156b57600080fd5b50508035926020909101359150565b600060e0828403121561158c57600080fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156115e4576115e4611592565b60405290565b600082601f8301126115fb57600080fd5b813567ffffffffffffffff8082111561161657611616611592565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561165c5761165c611592565b8160405283815286602085880101111561167557600080fd5b836020870160208301376000602085830101528094505050505092915050565b8015158114610cab57600080fd5b6000806000606084860312156116b857600080fd5b833567ffffffffffffffff808211156116d057600080fd5b6116dc8783880161157a565b945060208601359150808211156116f257600080fd5b506116ff868287016115ea565b925050604084013561171081611695565b809150509250925092565b60005b8381101561173657818101518382015260200161171e565b50506000910152565b6000815180845261175781602086016020860161171b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b83518152602080850151908201526080604082015260006117ad608083018561173f565b82810360608401526117bf818561173f565b9695505050505050565b803563ffffffff811681146117dd57600080fd5b919050565b6000602082840312156117f457600080fd5b610ddd826117c9565b602081526000610ddd602083018461173f565b73ffffffffffffffffffffffffffffffffffffffff81168114610cab57600080fd5b80356117dd81611810565b6000806040838503121561185057600080fd5b823561185b81611810565b946020939093013593505050565b60006020828403121561187b57600080fd5b8135610ddd81611810565b6000806000806060858703121561189c57600080fd5b843567ffffffffffffffff808211156118b457600080fd5b6118c08883890161157a565b955060208701359150808211156118d657600080fd5b506118e387828801611493565b90945092505060408501356118f781611695565b939692955090935050565b8151815260208083015190820152604081016105f2565b60006020828403121561192b57600080fd5b813567ffffffffffffffff81111561194257600080fd5b610bd2848285016115ea565b8183823760009101908152919050565b803567ffffffffffffffff811681146117dd57600080fd5b600060e0823603121561198857600080fd5b6119906115c1565b6119998361195e565b81526119a7602084016117c9565b60208201526119b860408401611832565b60408201526119c9606084016117c9565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff8111156119fc57600080fd5b611a08368286016115ea565b60c08301525092915050565b600181811c90821680611a2857607f821691505b60208210810361158c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060208284031215611a7357600080fd5b8151610ddd81611810565b601f821115610b42576000816000526020600020601f850160051c81016020861015611aa75750805b601f850160051c820191505b81811015611ac657828155600101611ab3565b505050505050565b815167ffffffffffffffff811115611ae857611ae8611592565b611afc81611af68454611a14565b84611a7e565b602080601f831160018114611b4f5760008415611b195750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611ac6565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611b9c57888601518255948401946001909101908401611b7d565b5085821015611bd857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008085851115611bf857600080fd5b83861115611c0557600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015611c525780818660040360031b1b83161692505b505092915050565b803560208310156105f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015611c525760089490940360031b84901b1690921692915050565b7fff000000000000000000000000000000000000000000000000000000000000008960f81b1681527fffffffffffffffff0000000000000000000000000000000000000000000000008860c01b16600182015260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b16600984015287600d840152808760e01b16602d840152508460318301528360518301528251611d8e81607185016020870161171b565b919091016071019998505050505050505050565b600060208284031215611db457600080fd5b8151610ddd81611695565b60008251611dd181846020870161171b565b919091019291505056fea2646970667358221220d42394ded1cc993f25399ee65cd1f1bdebc165739a074470df0d865221bc676364736f6c63430008160033";
27711
27725
  static readonly abi: readonly [{
27712
27726
  readonly inputs: readonly [{
27713
27727
  readonly internalType: "address";
@@ -28179,7 +28193,7 @@ declare class OmniCounter__factory extends ContractFactory {
28179
28193
  }): TransactionRequest;
28180
28194
  attach(address: string): OmniCounter;
28181
28195
  connect(signer: Signer): OmniCounter__factory;
28182
- static readonly bytecode = "0x60a06040523480156200001157600080fd5b5060405162003567380380620035678339810160408190526200003491620001c8565b8181818162000043336200015b565b6200004e816200015b565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b1580156200009857600080fd5b505af1158015620000ad573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000200565b600560146101000a81548163ffffffff021916908363ffffffff16021790555050506200022f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001c357600080fd5b919050565b60008060408385031215620001dc57600080fd5b620001e783620001ab565b9150620001f760208401620001ab565b90509250929050565b6000602082840312156200021357600080fd5b815163ffffffff811681146200022857600080fd5b9392505050565b6080516132dd6200028a6000396000818161038b0152818161065001528181610aea01528181610f6101528181611098015281816117dc01528181611ad901528181611d3801528181611fce01526120c701526132dd6000f3fe6080604052600436106101cf5760003560e01c80637d25a05e116100f6578063d045a0dc1161008f578063f2fde38b11610061578063f2fde38b146105c1578063f3fef3a3146105e1578063f851a44014610601578063ff7bd03d1461062e57005b8063d045a0dc14610546578063d0a1026014610559578063d22446ce1461056c578063d4243885146105a157005b8063bb0b6a53116100c8578063bb0b6a53146104d3578063bd815db014610500578063c95c55be14610513578063ca5eb5e11461052657005b80637d25a05e1461042f5780638da5cb5b14610468578063b731ea0a14610493578063b7abbb5d146104c057005b806356a4728911610168578063622f17f61161013a578063622f17f6146103ad578063704b6c02146103da5780637112f86f146103fa578063715018a61461041a57005b806356a47289146102fc5780635a0dfe4d146103295780635b849af6146103595780635e280f111461037957005b80633400288b116101a15780633400288b1461024b578063416ecebf1461026b57806352ae2879146102b5578063542e7b56146102e957005b806306661abd146101d857806313137d651461020157806317442b7014610214578063257f4e051461023557005b366101d657005b005b3480156101e457600080fd5b506101ee60035481565b6040519081526020015b60405180910390f35b6101d661020f3660046126df565b61064e565b34801561022057600080fd5b506040805160018082526020820152016101f8565b34801561024157600080fd5b506101ee60045481565b34801561025757600080fd5b506101d6610266366004612798565b61074d565b34801561027757600080fd5b506005546102a09074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f8565b3480156102c157600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f8565b6101d66102f7366004612807565b6107aa565b34801561030857600080fd5b506101ee6103173660046128a1565b60086020526000908152604090205481565b34801561033557600080fd5b50610349610344366004612798565b610971565b60405190151581526020016101f8565b34801561036557600080fd5b506101d66103743660046128ca565b610990565b34801561038557600080fd5b506102c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b957600080fd5b506101ee6103c83660046128a1565b60096020526000908152604090205481565b3480156103e657600080fd5b506101d66103f53660046128e7565b6109c9565b34801561040657600080fd5b506101d661041536600461291a565b610a91565b34801561042657600080fd5b506101d6610bcb565b34801561043b57600080fd5b5061044f61044a366004612798565b610bdf565b60405167ffffffffffffffff90911681526020016101f8565b34801561047457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c4565b34801561049f57600080fd5b506002546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66104ce36600461296b565b610c32565b3480156104df57600080fd5b506101ee6104ee3660046128a1565b60016020526000908152604090205481565b6101d661050e3660046129cc565b610cb5565b6101d661052136600461296b565b610e6c565b34801561053257600080fd5b506101d66105413660046128e7565b610f14565b6101d66105543660046126df565b610fb9565b6101d6610567366004612a0e565b611001565b34801561057857600080fd5b5061058c61058736600461296b565b6112d6565b604080519283526020830191909152016101f8565b3480156105ad57600080fd5b506101d66105bc3660046128e7565b61134d565b3480156105cd57600080fd5b506101d66105dc3660046128e7565b6113ce565b3480156105ed57600080fd5b506101d66105fc366004612a8f565b611485565b34801561060d57600080fd5b506005546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063a57600080fd5b50610349610649366004612aad565b6115d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906106de906106d9908a6128a1565b611606565b14610735576106f060208801886128a1565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106bb565b6107448787878787878761165b565b50505050505050565b6107556119ac565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b84811480156107b857508483145b61081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106bb565b610826612614565b3460005b8781101561096657600061083f60018a612af8565b821461084b573061084d565b335b905060008a8a8481811061086357610863612b0b565b905060200201602081019061087891906128a1565b9050600089898581811061088e5761088e612b0b565b90506020020160208101906108a39190612b3a565b905061093a826108c583600560149054906101000a900463ffffffff16611a2d565b8a8a888181106108d7576108d7612b0b565b90506020028101906108e99190612b55565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611aa69050565b955061094582611bbe565b6040860151516109559086612af8565b9450506001909201915061082a9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b6109986119ac565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a996119ac565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b505060075460ff16159150610bc690505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9e83612bba565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bd36119ac565b610bdd6000611be7565b565b60075460009060ff1615610c2a5763ffffffff83166000908152600660209081526040808320858452909152902054610c239067ffffffffffffffff166001612be1565b905061098a565b50600061098a565b610ca584610c5285600560149054906101000a900463ffffffff16611a2d565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611aa69050565b50610caf84611bbe565b50505050565b60005b81811015610da75736838383818110610cd357610cd3612b0b565b9050602002810190610ce59190612c09565b9050610d01610cf760208301836128a1565b6020830135610971565b610d0b5750610d9f565b3063d045a0dc60c08301358360a0810135610d2a610100830183612b55565b610d3b610100890160e08a016128e7565b610d496101208a018a612b55565b6040518963ffffffff1660e01b8152600401610d6b9796959493929190612c90565b6000604051808303818588803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b5050505050505b600101610cb8565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e399190810190612d77565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b60055473ffffffffffffffffffffffffffffffffffffffff163314610eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b610f0d84610c5285600560149054906101000a900463ffffffff16611a2d565b5050505050565b610f1c6119ac565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fa557600080fd5b505af1158015610f0d573d6000803e3d6000fd5b333014610ff2576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074487878787878787610735565b73ffffffffffffffffffffffffffffffffffffffff87163014611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106bb565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106bb565b600061112b8686611c5c565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111755760016004600082825461116a9190612e94565b909155506112cc9050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161126a576001600460008282546111b29190612e94565b90915550600090506111c48787611c7e565b90506111cf81611bbe565b600061122262030d40600061121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611ca1565b9050611262826112456001600560149054906101000a900463ffffffff16611a2d565b836040518060400160405280348152602001600081525030611aa6565b5050506112cc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106bb565b5050505050505050565b6000806000611337876112fb88600560149054906101000a900463ffffffff16611a2d565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d22915050565b8051602090910151909890975095505050505050565b6113556119ac565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113d66119ac565b73ffffffffffffffffffffffffffffffffffffffff8116611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106bb565b61148281611be7565b50565b60055473ffffffffffffffffffffffffffffffffffffffff163314611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b5050905080610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106bb565b60006020820180359060019083906115e890866128a1565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061098a576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106bb565b61168561166b60208901896128a1565b602089013561168060608b0160408c01612ea7565b611e12565b60006116918686611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161175f57600380549060006116cd83612ec4565b91905055506116dc8686611f48565b341015611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106bb565b61175a61175560208a018a6128a1565b611f67565b6112cc565b60ff811660021480611774575060ff81166004145b15611851576003805490600061178983612ec4565b9091555061179f905061175560208a018a6128a1565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061181a9030908b906000908c908c90600401612efc565b600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050506112cc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161126a576003805490600061188b83612ec4565b909155506118a1905061175560208a018a6128a1565b6118b66118b160208a018a6128a1565b611bbe565b600061190262030d40600a61121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119a561191460208b018b6128a1565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611245565b50506112cc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611aae612614565b6000611abd8460000151611f88565b602085015190915015611ad757611ad78460200151611fca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b348c611606565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611b70929190612f3c565b60806040518083038185885af1158015611b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb3919061302f565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611bdf83612ec4565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611c6b6001828486613097565b611c74916130c1565b60f81c9392505050565b6000611c8e600560018486613097565b611c9791613109565b60e01c9392505050565b6060836003611cb18260006120f0565b61ffff1614611cfe57611cc58160006120f0565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106bb565b6000611d0a8585612170565b9050611d1886600183612210565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611d9289611606565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611dc7929190612f3c565b6040805180830381865afa158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e07919061314f565b90505b949350505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611ed257611e56816001612be1565b67ffffffffffffffff168267ffffffffffffffff1614611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106bb565b8067ffffffffffffffff168267ffffffffffffffff161115610caf5763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611f578260058186613097565b611f609161316b565b9392505050565b63ffffffff81166000908152600860205260408120805491611bdf83612ec4565b600081341015611fc6576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106bb565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205b91906131a7565b905073ffffffffffffffffffffffffffffffffffffffff81166120aa576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ec73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561227b565b5050565b60006120fd826002612e94565b83511015612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106bb565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156121d957604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611f60565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611a8f565b60608360036122208260006120f0565b61ffff161461223457611cc58160006120f0565b8460016122418551612310565b61224c9060016131c4565b86866040516020016122629594939291906131df565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610caf9085906123a4565b600061ffff821115611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106bb565b6000612406826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124b39092919063ffffffff16565b90508051600014806124275750808060200190518101906124279190613278565b610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106bb565b6060611e0a8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124e79190613295565b60006040518083038185875af1925050503d8060008114612524576040519150601f19603f3d011682016040523d82523d6000602084013e612529565b606091505b5091509150611bb387838387606083156125cb5782516000036125c45773ffffffffffffffffffffffffffffffffffffffff85163b6125c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106bb565b5081611e0a565b611e0a83838151156125e05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612657604051806040016040528060008152602001600081525090565b905290565b60006060828403121561266e57600080fd5b50919050565b60008083601f84011261268657600080fd5b50813567ffffffffffffffff81111561269e57600080fd5b6020830191508360208285010111156126b657600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148257600080fd5b600080600080600080600060e0888a0312156126fa57600080fd5b612704898961265c565b965060608801359550608088013567ffffffffffffffff8082111561272857600080fd5b6127348b838c01612674565b909750955060a08a01359150612749826126bd565b90935060c0890135908082111561275f57600080fd5b5061276c8a828b01612674565b989b979a50959850939692959293505050565b803563ffffffff8116811461279357600080fd5b919050565b600080604083850312156127ab57600080fd5b6127b48361277f565b946020939093013593505050565b60008083601f8401126127d457600080fd5b50813567ffffffffffffffff8111156127ec57600080fd5b6020830191508360208260051b85010111156126b657600080fd5b6000806000806000806060878903121561282057600080fd5b863567ffffffffffffffff8082111561283857600080fd5b6128448a838b016127c2565b9098509650602089013591508082111561285d57600080fd5b6128698a838b016127c2565b9096509450604089013591508082111561288257600080fd5b5061288f89828a016127c2565b979a9699509497509295939492505050565b6000602082840312156128b357600080fd5b611f608261277f565b801515811461148257600080fd5b6000602082840312156128dc57600080fd5b8135611f60816128bc565b6000602082840312156128f957600080fd5b8135611f60816126bd565b67ffffffffffffffff8116811461148257600080fd5b60008060006060848603121561292f57600080fd5b6129388461277f565b925060208401359150604084013561294f81612904565b809150509250925092565b803560ff8116811461279357600080fd5b6000806000806060858703121561298157600080fd5b61298a8561277f565b93506129986020860161295a565b9250604085013567ffffffffffffffff8111156129b457600080fd5b6129c087828801612674565b95989497509550505050565b600080602083850312156129df57600080fd5b823567ffffffffffffffff8111156129f657600080fd5b612a02858286016127c2565b90969095509350505050565b600080600080600080600060a0888a031215612a2957600080fd5b8735612a34816126bd565b965060208801359550604088013567ffffffffffffffff80821115612a5857600080fd5b612a648b838c01612674565b909750955060608a01359150612a79826126bd565b9093506080890135908082111561275f57600080fd5b60008060408385031215612aa257600080fd5b82356127b4816126bd565b600060608284031215612abf57600080fd5b611f60838361265c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561098a5761098a612ac9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612b4c57600080fd5b611f608261295a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8a57600080fd5b83018035915067ffffffffffffffff821115612ba557600080fd5b6020019150368190038213156126b657600080fd5b600067ffffffffffffffff808316818103612bd757612bd7612ac9565b6001019392505050565b67ffffffffffffffff818116838216019080821115612c0257612c02612ac9565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c3d57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612c9e8961277f565b1681526020880135602082015260006040890135612cbb81612904565b67ffffffffffffffff811660408401525087606083015260e06080830152612ce760e083018789612c47565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d16818587612c47565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612d6e578181015183820152602001612d56565b50506000910152565b600060208284031215612d8957600080fd5b815167ffffffffffffffff80821115612da157600080fd5b818401915084601f830112612db557600080fd5b815181811115612dc757612dc7612d24565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612e0d57612e0d612d24565b81604052828152876020848701011115612e2657600080fd5b611bb3836020830160208801612d53565b60008151808452612e4f816020860160208601612d53565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611f606020830184612e37565b8082018082111561098a5761098a612ac9565b600060208284031215612eb957600080fd5b8135611f6081612904565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef557612ef5612ac9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611bb3608083018486612c47565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612f7260e0840182612e37565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612fad8282612e37565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612ff257600080fd5b6040516040810181811067ffffffffffffffff8211171561301557613015612d24565b604052825181526020928301519281019290925250919050565b60006080828403121561304157600080fd5b6040516060810181811067ffffffffffffffff8211171561306457613064612d24565b60405282518152602083015161307981612904565b602082015261308b8460408501612fe0565b60408201529392505050565b600080858511156130a757600080fd5b838611156130b457600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131015780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131015760049490940360031b84901b1690921692915050565b60006040828403121561316157600080fd5b611f608383612fe0565b8035602083101561098a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000602082840312156131b957600080fd5b8151611f60816126bd565b61ffff818116838216019080821115612c0257612c02612ac9565b600086516131f1818460208b01612d53565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613269816004840160208801612d53565b01600401979650505050505050565b60006020828403121561328a57600080fd5b8151611f60816128bc565b60008251612c3d818460208701612d5356fea26469706673582212206049652ca1134e9dc51a559fd9b569e7a65ecb0113d87c2a55c87385e5dc240c64736f6c63430008160033";
28196
+ static readonly bytecode = "0x60a06040523480156200001157600080fd5b5060405162003567380380620035678339810160408190526200003491620001c8565b8181818162000043336200015b565b6200004e816200015b565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b1580156200009857600080fd5b505af1158015620000ad573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000200565b600560146101000a81548163ffffffff021916908363ffffffff16021790555050506200022f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001c357600080fd5b919050565b60008060408385031215620001dc57600080fd5b620001e783620001ab565b9150620001f760208401620001ab565b90509250929050565b6000602082840312156200021357600080fd5b815163ffffffff811681146200022857600080fd5b9392505050565b6080516132dd6200028a6000396000818161038b0152818161065001528181610aea01528181610f6101528181611098015281816117dc01528181611ad901528181611d3801528181611fce01526120c701526132dd6000f3fe6080604052600436106101cf5760003560e01c80637d25a05e116100f6578063d045a0dc1161008f578063f2fde38b11610061578063f2fde38b146105c1578063f3fef3a3146105e1578063f851a44014610601578063ff7bd03d1461062e57005b8063d045a0dc14610546578063d0a1026014610559578063d22446ce1461056c578063d4243885146105a157005b8063bb0b6a53116100c8578063bb0b6a53146104d3578063bd815db014610500578063c95c55be14610513578063ca5eb5e11461052657005b80637d25a05e1461042f5780638da5cb5b14610468578063b731ea0a14610493578063b7abbb5d146104c057005b806356a4728911610168578063622f17f61161013a578063622f17f6146103ad578063704b6c02146103da5780637112f86f146103fa578063715018a61461041a57005b806356a47289146102fc5780635a0dfe4d146103295780635b849af6146103595780635e280f111461037957005b80633400288b116101a15780633400288b1461024b578063416ecebf1461026b57806352ae2879146102b5578063542e7b56146102e957005b806306661abd146101d857806313137d651461020157806317442b7014610214578063257f4e051461023557005b366101d657005b005b3480156101e457600080fd5b506101ee60035481565b6040519081526020015b60405180910390f35b6101d661020f3660046126df565b61064e565b34801561022057600080fd5b506040805160018082526020820152016101f8565b34801561024157600080fd5b506101ee60045481565b34801561025757600080fd5b506101d6610266366004612798565b61074d565b34801561027757600080fd5b506005546102a09074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f8565b3480156102c157600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f8565b6101d66102f7366004612807565b6107aa565b34801561030857600080fd5b506101ee6103173660046128a1565b60086020526000908152604090205481565b34801561033557600080fd5b50610349610344366004612798565b610971565b60405190151581526020016101f8565b34801561036557600080fd5b506101d66103743660046128ca565b610990565b34801561038557600080fd5b506102c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b957600080fd5b506101ee6103c83660046128a1565b60096020526000908152604090205481565b3480156103e657600080fd5b506101d66103f53660046128e7565b6109c9565b34801561040657600080fd5b506101d661041536600461291a565b610a91565b34801561042657600080fd5b506101d6610bcb565b34801561043b57600080fd5b5061044f61044a366004612798565b610bdf565b60405167ffffffffffffffff90911681526020016101f8565b34801561047457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c4565b34801561049f57600080fd5b506002546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66104ce36600461296b565b610c32565b3480156104df57600080fd5b506101ee6104ee3660046128a1565b60016020526000908152604090205481565b6101d661050e3660046129cc565b610cb5565b6101d661052136600461296b565b610e6c565b34801561053257600080fd5b506101d66105413660046128e7565b610f14565b6101d66105543660046126df565b610fb9565b6101d6610567366004612a0e565b611001565b34801561057857600080fd5b5061058c61058736600461296b565b6112d6565b604080519283526020830191909152016101f8565b3480156105ad57600080fd5b506101d66105bc3660046128e7565b61134d565b3480156105cd57600080fd5b506101d66105dc3660046128e7565b6113ce565b3480156105ed57600080fd5b506101d66105fc366004612a8f565b611485565b34801561060d57600080fd5b506005546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063a57600080fd5b50610349610649366004612aad565b6115d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906106de906106d9908a6128a1565b611606565b14610735576106f060208801886128a1565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106bb565b6107448787878787878761165b565b50505050505050565b6107556119ac565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b84811480156107b857508483145b61081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106bb565b610826612614565b3460005b8781101561096657600061083f60018a612af8565b821461084b573061084d565b335b905060008a8a8481811061086357610863612b0b565b905060200201602081019061087891906128a1565b9050600089898581811061088e5761088e612b0b565b90506020020160208101906108a39190612b3a565b905061093a826108c583600560149054906101000a900463ffffffff16611a2d565b8a8a888181106108d7576108d7612b0b565b90506020028101906108e99190612b55565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611aa69050565b955061094582611bbe565b6040860151516109559086612af8565b9450506001909201915061082a9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b6109986119ac565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a996119ac565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b505060075460ff16159150610bc690505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9e83612bba565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bd36119ac565b610bdd6000611be7565b565b60075460009060ff1615610c2a5763ffffffff83166000908152600660209081526040808320858452909152902054610c239067ffffffffffffffff166001612be1565b905061098a565b50600061098a565b610ca584610c5285600560149054906101000a900463ffffffff16611a2d565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611aa69050565b50610caf84611bbe565b50505050565b60005b81811015610da75736838383818110610cd357610cd3612b0b565b9050602002810190610ce59190612c09565b9050610d01610cf760208301836128a1565b6020830135610971565b610d0b5750610d9f565b3063d045a0dc60c08301358360a0810135610d2a610100830183612b55565b610d3b610100890160e08a016128e7565b610d496101208a018a612b55565b6040518963ffffffff1660e01b8152600401610d6b9796959493929190612c90565b6000604051808303818588803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b5050505050505b600101610cb8565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e399190810190612d77565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b60055473ffffffffffffffffffffffffffffffffffffffff163314610eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b610f0d84610c5285600560149054906101000a900463ffffffff16611a2d565b5050505050565b610f1c6119ac565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fa557600080fd5b505af1158015610f0d573d6000803e3d6000fd5b333014610ff2576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074487878787878787610735565b73ffffffffffffffffffffffffffffffffffffffff87163014611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106bb565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106bb565b600061112b8686611c5c565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111755760016004600082825461116a9190612e94565b909155506112cc9050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161126a576001600460008282546111b29190612e94565b90915550600090506111c48787611c7e565b90506111cf81611bbe565b600061122262030d40600061121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611ca1565b9050611262826112456001600560149054906101000a900463ffffffff16611a2d565b836040518060400160405280348152602001600081525030611aa6565b5050506112cc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106bb565b5050505050505050565b6000806000611337876112fb88600560149054906101000a900463ffffffff16611a2d565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d22915050565b8051602090910151909890975095505050505050565b6113556119ac565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113d66119ac565b73ffffffffffffffffffffffffffffffffffffffff8116611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106bb565b61148281611be7565b50565b60055473ffffffffffffffffffffffffffffffffffffffff163314611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b5050905080610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106bb565b60006020820180359060019083906115e890866128a1565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061098a576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106bb565b61168561166b60208901896128a1565b602089013561168060608b0160408c01612ea7565b611e12565b60006116918686611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161175f57600380549060006116cd83612ec4565b91905055506116dc8686611f48565b341015611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106bb565b61175a61175560208a018a6128a1565b611f67565b6112cc565b60ff811660021480611774575060ff81166004145b15611851576003805490600061178983612ec4565b9091555061179f905061175560208a018a6128a1565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061181a9030908b906000908c908c90600401612efc565b600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050506112cc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161126a576003805490600061188b83612ec4565b909155506118a1905061175560208a018a6128a1565b6118b66118b160208a018a6128a1565b611bbe565b600061190262030d40600a61121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119a561191460208b018b6128a1565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611245565b50506112cc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611aae612614565b6000611abd8460000151611f88565b602085015190915015611ad757611ad78460200151611fca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b348c611606565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611b70929190612f3c565b60806040518083038185885af1158015611b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb3919061302f565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611bdf83612ec4565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611c6b6001828486613097565b611c74916130c1565b60f81c9392505050565b6000611c8e600560018486613097565b611c9791613109565b60e01c9392505050565b6060836003611cb18260006120f0565b61ffff1614611cfe57611cc58160006120f0565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106bb565b6000611d0a8585612170565b9050611d1886600183612210565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611d9289611606565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611dc7929190612f3c565b6040805180830381865afa158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e07919061314f565b90505b949350505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611ed257611e56816001612be1565b67ffffffffffffffff168267ffffffffffffffff1614611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106bb565b8067ffffffffffffffff168267ffffffffffffffff161115610caf5763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611f578260058186613097565b611f609161316b565b9392505050565b63ffffffff81166000908152600860205260408120805491611bdf83612ec4565b600081341015611fc6576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106bb565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205b91906131a7565b905073ffffffffffffffffffffffffffffffffffffffff81166120aa576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ec73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561227b565b5050565b60006120fd826002612e94565b83511015612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106bb565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156121d957604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611f60565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611a8f565b60608360036122208260006120f0565b61ffff161461223457611cc58160006120f0565b8460016122418551612310565b61224c9060016131c4565b86866040516020016122629594939291906131df565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610caf9085906123a4565b600061ffff821115611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106bb565b6000612406826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124b39092919063ffffffff16565b90508051600014806124275750808060200190518101906124279190613278565b610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106bb565b6060611e0a8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124e79190613295565b60006040518083038185875af1925050503d8060008114612524576040519150601f19603f3d011682016040523d82523d6000602084013e612529565b606091505b5091509150611bb387838387606083156125cb5782516000036125c45773ffffffffffffffffffffffffffffffffffffffff85163b6125c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106bb565b5081611e0a565b611e0a83838151156125e05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612657604051806040016040528060008152602001600081525090565b905290565b60006060828403121561266e57600080fd5b50919050565b60008083601f84011261268657600080fd5b50813567ffffffffffffffff81111561269e57600080fd5b6020830191508360208285010111156126b657600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148257600080fd5b600080600080600080600060e0888a0312156126fa57600080fd5b612704898961265c565b965060608801359550608088013567ffffffffffffffff8082111561272857600080fd5b6127348b838c01612674565b909750955060a08a01359150612749826126bd565b90935060c0890135908082111561275f57600080fd5b5061276c8a828b01612674565b989b979a50959850939692959293505050565b803563ffffffff8116811461279357600080fd5b919050565b600080604083850312156127ab57600080fd5b6127b48361277f565b946020939093013593505050565b60008083601f8401126127d457600080fd5b50813567ffffffffffffffff8111156127ec57600080fd5b6020830191508360208260051b85010111156126b657600080fd5b6000806000806000806060878903121561282057600080fd5b863567ffffffffffffffff8082111561283857600080fd5b6128448a838b016127c2565b9098509650602089013591508082111561285d57600080fd5b6128698a838b016127c2565b9096509450604089013591508082111561288257600080fd5b5061288f89828a016127c2565b979a9699509497509295939492505050565b6000602082840312156128b357600080fd5b611f608261277f565b801515811461148257600080fd5b6000602082840312156128dc57600080fd5b8135611f60816128bc565b6000602082840312156128f957600080fd5b8135611f60816126bd565b67ffffffffffffffff8116811461148257600080fd5b60008060006060848603121561292f57600080fd5b6129388461277f565b925060208401359150604084013561294f81612904565b809150509250925092565b803560ff8116811461279357600080fd5b6000806000806060858703121561298157600080fd5b61298a8561277f565b93506129986020860161295a565b9250604085013567ffffffffffffffff8111156129b457600080fd5b6129c087828801612674565b95989497509550505050565b600080602083850312156129df57600080fd5b823567ffffffffffffffff8111156129f657600080fd5b612a02858286016127c2565b90969095509350505050565b600080600080600080600060a0888a031215612a2957600080fd5b8735612a34816126bd565b965060208801359550604088013567ffffffffffffffff80821115612a5857600080fd5b612a648b838c01612674565b909750955060608a01359150612a79826126bd565b9093506080890135908082111561275f57600080fd5b60008060408385031215612aa257600080fd5b82356127b4816126bd565b600060608284031215612abf57600080fd5b611f60838361265c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561098a5761098a612ac9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612b4c57600080fd5b611f608261295a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8a57600080fd5b83018035915067ffffffffffffffff821115612ba557600080fd5b6020019150368190038213156126b657600080fd5b600067ffffffffffffffff808316818103612bd757612bd7612ac9565b6001019392505050565b67ffffffffffffffff818116838216019080821115612c0257612c02612ac9565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c3d57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612c9e8961277f565b1681526020880135602082015260006040890135612cbb81612904565b67ffffffffffffffff811660408401525087606083015260e06080830152612ce760e083018789612c47565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d16818587612c47565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612d6e578181015183820152602001612d56565b50506000910152565b600060208284031215612d8957600080fd5b815167ffffffffffffffff80821115612da157600080fd5b818401915084601f830112612db557600080fd5b815181811115612dc757612dc7612d24565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612e0d57612e0d612d24565b81604052828152876020848701011115612e2657600080fd5b611bb3836020830160208801612d53565b60008151808452612e4f816020860160208601612d53565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611f606020830184612e37565b8082018082111561098a5761098a612ac9565b600060208284031215612eb957600080fd5b8135611f6081612904565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef557612ef5612ac9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611bb3608083018486612c47565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612f7260e0840182612e37565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612fad8282612e37565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612ff257600080fd5b6040516040810181811067ffffffffffffffff8211171561301557613015612d24565b604052825181526020928301519281019290925250919050565b60006080828403121561304157600080fd5b6040516060810181811067ffffffffffffffff8211171561306457613064612d24565b60405282518152602083015161307981612904565b602082015261308b8460408501612fe0565b60408201529392505050565b600080858511156130a757600080fd5b838611156130b457600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131015780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131015760049490940360031b84901b1690921692915050565b60006040828403121561316157600080fd5b611f608383612fe0565b8035602083101561098a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000602082840312156131b957600080fd5b8151611f60816126bd565b61ffff818116838216019080821115612c0257612c02612ac9565b600086516131f1818460208b01612d53565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613269816004840160208801612d53565b01600401979650505050505050565b60006020828403121561328a57600080fd5b8151611f60816128bc565b60008251612c3d818460208701612d5356fea26469706673582212208dcf587a715e854cab4206d6f438c749ad7455f3d9c894f7b12394e486cf91e764736f6c63430008160033";
28183
28197
  static readonly abi: readonly [{
28184
28198
  readonly inputs: readonly [{
28185
28199
  readonly internalType: "address";
@@ -28859,7 +28873,7 @@ declare class OmniCounterPreCrime__factory extends ContractFactory {
28859
28873
  }): TransactionRequest;
28860
28874
  attach(address: string): OmniCounterPreCrime;
28861
28875
  connect(signer: Signer): OmniCounterPreCrime__factory;
28862
- static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162002d5a38038062002d5a83398101604081905262000034916200014a565b8282826200004233620000dd565b6200004d81620000dd565b6001600160a01b03808416608052821660a0819052604080516352ae287960e01b815290516352ae2879916004808201926020929091908290030181865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000194565b6001600160a01b031660c05250620001b9945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200014557600080fd5b919050565b6000806000606084860312156200016057600080fd5b6200016b846200012d565b92506200017b602085016200012d565b91506200018b604085016200012d565b90509250925092565b600060208284031215620001a757600080fd5b620001b2826200012d565b9392505050565b60805160a05160c051612b4e6200020c6000396000818161018d0152611b3201526000818161029f015281816105f0015281816111d9015261131b0152600081816119c60152611b700152612b4e6000f3fe6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd366004612058565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e6101693660046120f2565b610539565b60405161015291906121cc565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b506101026102663660046121f5565b610859565b34801561027757600080fd5b506102806108b4565b6040516101529190612212565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc3660046120f2565b610933565b3480156102ed57600080fd5b506101026102fc366004612271565b610bd0565b34801561030d57600080fd5b5061010261031c3660046122a7565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b961231c565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff8111156104005761040061231c565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b84811015610518573660008787848181106104565761045661234b565b9050602002810190610468919061237a565b909250905061047b6004600083856123df565b61048491612409565b60e01c8584815181106104995761049961234b565b63ffffffff909216602092830291909101909101526104bb81600481856123df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050865187925086915081106105035761050361234b565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca81611314565b9695505050505050565b6105dc61147b565b6105e660006114fc565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d61231c565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad61234b565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190612451565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190612451565b81525083838151811061081c5761081c61234b565b60209081029190910101525060010161068e565b50806040516020016108429190612212565b604051602081830303815290604052935050505090565b61086161147b565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b611571565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd908490839060200161246a565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b3061234b565b602002602001015160000151848381518110610b4e57610b4e61234b565b602002602001015160200151858481518110610b6c57610b6c61234b565b602002602001015160400151604051602001610b8b94939291906124b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd861147b565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c89816114fc565b50565b610c9461147b565b610ca060016000611fae565b60005b81811015610cf7576001838383818110610cbf57610cbf61234b565b835460018101855560009485526020909420606090910292909201926003029091019050610ced828261251d565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d1761231c565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de061234b565b9050602002810190610df2919061237a565b91509150610e008282611838565b848481518110610e1257610e1261234b565b6020026020010181905250848381518110610e2f57610e2f61234b565b6020026020010151848481518110610e4957610e4961234b565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c83611571565b905060005b8151811015610efd576000828281518110610e9e57610e9e61234b565b6020026020010151600001519050610eb6848261196b565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a6119c2565b9050610f16828261196b565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e6119c2565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f8761234b565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac61234b565b6020026020010151806020019051810190610fc791906125e7565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff761234b565b6020026020010151905060008583815181106110155761101561234b565b602002602001015180602001905181019061103091906125e7565b9050600061103e8584611a58565b509050600061104d8388611a58565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561130d57600085828151811061118a5761118a61234b565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125991906126c4565b6112635750611305565b80515163ffffffff868116911614158061128257508051602001518414155b156112a3578051805160209091015190955093506112a08585611af5565b92505b6112ac83612715565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff1614611303576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b8660405160240161136a919061273c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516113f391906128a2565b60006040518083038185875af1925050503d8060008114611430576040519150601f19603f3d011682016040523d82523d6000602084013e611435565b606091505b509150915060006114468383611be4565b90506114506119c2565b816040516020016114629291906128be565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156115e95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611597565b5050505090506000835167ffffffffffffffff81111561160b5761160b61231c565b60405190808252806020026020018201604052801561167457816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116295790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117465760008682815181106116b8576116b861234b565b60200260200101516000015160000151905060006116d68683611d03565b9050600081121580156116f2575060006116f08684611d03565b125b1561173c578361170181612909565b9450508581815181106117165761171661234b565b60200260200101518585815181106117305761173061234b565b60200260200101819052505b505060010161169b565b506000811261183057600061175c826001612941565b90508067ffffffffffffffff8111156117775761177761231c565b6040519080825280602002602001820160405280156117e057816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117955790505b50945060005b8181101561182d578381815181106118005761180061234b565b602002602001015186828151811061181a5761181a61234b565b60209081029190910101526001016117e6565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806118a78585611d78565b63ffffffff1681526020016118bc8585611d9b565b81526020016118cb8585611db4565b67ffffffffffffffff16905281526118e38383611dd7565b63ffffffff1660208201526118f88383611de7565b73ffffffffffffffffffffffffffffffffffffffff16604082015261191d8383611df9565b606082015261192c8383611e09565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b83518110156119b6578263ffffffff168482815181106119915761199161234b565b602002602001015163ffffffff16036119ae5760019150506119bc565b60010161196f565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a539190612954565b905090565b60008060005b8451811015611ae5578363ffffffff16858281518110611a8057611a8061234b565b60200260200101516000015163ffffffff1603611add57848181518110611aa957611aa961234b565b602002602001015160200151858281518110611ac757611ac761234b565b6020026020010151604001519250925050611aee565b600101611a5e565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612971565b9392505050565b60608215611c4e576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611c788361298e565b7fffffffff000000000000000000000000000000000000000000000000000000001614611cd357816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c7791906121cc565b611ced6004808451611ce591906129da565b849190611e24565b905080806020019051810190611bdd91906129ed565b6000805b8351811015611d4f578263ffffffff16848281518110611d2957611d2961234b565b60200260200101516000015163ffffffff1603611d475790506119bc565b600101611d07565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611d88600d600984866123df565b611d9191612409565b60e01c9392505050565b6000611dab602d600d84866123df565b611bdd91612a96565b6000611dc46009600184866123df565b611dcd91612ad2565b60c01c9392505050565b6000611d886031602d84866123df565b6000611bdd611df68484611f9e565b90565b6000611dab6071605184866123df565b366000611e1983607181876123df565b915091509250929050565b606081611e3281601f612941565b1015611e9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611ea48284612941565b84511015611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f2d5760405191506000825260208201604052611f95565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611f66578051835260209283019201611f4e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611dab6051603184866123df565b5080546000825560030290600052602060002090810190610c8991905b8082111561200f5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301611fcb565b5090565b60008083601f84011261202557600080fd5b50813567ffffffffffffffff81111561203d57600080fd5b6020830191508360208260051b8501011115611aee57600080fd5b6000806000806000806060878903121561207157600080fd5b863567ffffffffffffffff8082111561208957600080fd5b6120958a838b01612013565b909850965060208901359150808211156120ae57600080fd5b6120ba8a838b01612013565b909650945060408901359150808211156120d357600080fd5b506120e089828a01612013565b979a9699509497509295939492505050565b6000806000806040858703121561210857600080fd5b843567ffffffffffffffff8082111561212057600080fd5b61212c88838901612013565b9096509450602087013591508082111561214557600080fd5b5061215287828801612013565b95989497509550505050565b60005b83811015612179578181015183820152602001612161565b50506000910152565b6000815180845261219a81602086016020860161215e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bdd6020830184612182565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561220757600080fd5b8135611bdd816121df565b602080825282518282018190526000919060409081850190868401855b82811015612264578151805163ffffffff1685528681015187860152850151858501526060909301929085019060010161222f565b5091979650505050505050565b60006020828403121561228357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611bdd57600080fd5b600080602083850312156122ba57600080fd5b823567ffffffffffffffff808211156122d257600080fd5b818501915085601f8301126122e657600080fd5b8135818111156122f557600080fd5b86602060608302850101111561230a57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126123af57600080fd5b83018035915067ffffffffffffffff8211156123ca57600080fd5b602001915036819003821315611aee57600080fd5b600080858511156123ef57600080fd5b838611156123fc57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124495780818660040360031b1b83161692505b505092915050565b60006020828403121561246357600080fd5b5051919050565b6000835161247c81846020880161215e565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b600085516124c6818460208a0161215e565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b81356125288161250b565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125925761259261231c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125df576125df61231c565b604052919050565b600060208083850312156125fa57600080fd5b825167ffffffffffffffff8082111561261257600080fd5b818501915085601f83011261262657600080fd5b8151818111156126385761263861231c565b612646848260051b01612598565b8181528481019250606091820284018501918883111561266557600080fd5b938501935b828510156126b85780858a0312156126825760008081fd5b61268a61256f565b85516126958161250b565b81528587015187820152604080870151908201528452938401939285019261266a565b50979650505050505050565b6000602082840312156126d657600080fd5b81518015158114611bdd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103612732576127326126e6565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612894577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281516101406127c8858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606127df8188018363ffffffff169052565b89840151915060806128088189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e09061284c8289018473ffffffffffffffffffffffffffffffffffffffff169052565b8401516101008801849052915061286587840183612182565b93015186840361012088015292915061288090508183612182565b968901969450505090860190600101612765565b509098975050505050505050565b600082516128b481846020870161215e565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516128fb81600485016020870161215e565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361293a5761293a6126e6565b5060010190565b808201808211156119bc576119bc6126e6565b60006020828403121561296657600080fd5b8151611bdd8161250b565b60006020828403121561298357600080fd5b8151611bdd816121df565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118305760049290920360031b82901b161692915050565b818103818111156119bc576119bc6126e6565b6000602082840312156129ff57600080fd5b815167ffffffffffffffff80821115612a1757600080fd5b818401915084601f830112612a2b57600080fd5b815181811115612a3d57612a3d61231c565b612a6e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612598565b9150808252856020828501011115612a8557600080fd5b611f9581602084016020860161215e565b803560208310156119bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124495760089490940360031b84901b169092169291505056fea2646970667358221220b02c293fdd95778497098472981096022924f79f713e1bbaa44e631a470daf5a64736f6c63430008160033";
28876
+ static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162002d5a38038062002d5a83398101604081905262000034916200014a565b8282826200004233620000dd565b6200004d81620000dd565b6001600160a01b03808416608052821660a0819052604080516352ae287960e01b815290516352ae2879916004808201926020929091908290030181865afa1580156200009e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c4919062000194565b6001600160a01b031660c05250620001b9945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200014557600080fd5b919050565b6000806000606084860312156200016057600080fd5b6200016b846200012d565b92506200017b602085016200012d565b91506200018b604085016200012d565b90509250925092565b600060208284031215620001a757600080fd5b620001b2826200012d565b9392505050565b60805160a05160c051612b4e6200020c6000396000818161018d0152611b3201526000818161029f015281816105f0015281816111d9015261131b0152600081816119c60152611b700152612b4e6000f3fe6080604052600436106100dd5760003560e01c80638e9e70991161007f578063bf7b5d7a11610059578063bf7b5d7a1461028d578063f0cd3836146102c1578063f2fde38b146102e1578063f8bcddf61461030157600080fd5b80638e9e709914610236578063afea44ef1461024b578063b9a1f5e71461026b57600080fd5b806352ae2879116100bb57806352ae28791461017b57806354fd4d50146101d4578063715018a6146101f65780638da5cb5b1461020b57600080fd5b806310f9cf3a146100e25780632913daa01461010457806350dfa9371461015b575b600080fd5b3480156100ee57600080fd5b506101026100fd366004612058565b610321565b005b34801561011057600080fd5b5060005461013d9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020015b60405180910390f35b61016e6101693660046120f2565b610539565b60405161015291906121cc565b34801561018757600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b3480156101e057600080fd5b5060408051600281526000602082015201610152565b34801561020257600080fd5b506101026105d4565b34801561021757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101af565b34801561024257600080fd5b5061016e6105e8565b34801561025757600080fd5b506101026102663660046121f5565b610859565b34801561027757600080fd5b506102806108b4565b6040516101529190612212565b34801561029957600080fd5b506101af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102cd57600080fd5b5061016e6102dc3660046120f2565b610933565b3480156102ed57600080fd5b506101026102fc366004612271565b610bd0565b34801561030d57600080fd5b5061010261031c3660046122a7565b610c8c565b3361dead1461035c576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061039c8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b905060008267ffffffffffffffff8111156103b9576103b961231c565b6040519080825280602002602001820160405280156103e2578160200160208202803683370190505b50905060008367ffffffffffffffff8111156104005761040061231c565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b84811015610518573660008787848181106104565761045661234b565b9050602002810190610468919061237a565b909250905061047b6004600083856123df565b61048491612409565b60e01c8584815181106104995761049961234b565b63ffffffff909216602092830291909101909101526104bb81600481856123df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050865187925086915081106105035761050361234b565b60209081029190910101525050600101610439565b506105238383610e6a565b61052e838383610f54565b505050505050505050565b60603361dead14610576576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006105b68686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b90506105c1816110d2565b6105ca81611314565b9695505050505050565b6105dc61147b565b6105e660006114fc565b565b6001546060907f000000000000000000000000000000000000000000000000000000000000000090819060009067ffffffffffffffff81111561062d5761062d61231c565b60405190808252806020026020018201604052801561068857816020015b6106756040518060600160405280600063ffffffff16815260200160008152602001600081525090565b81526020019060019003908161064b5790505b50905060005b600154811015610830576000600182815481106106ad576106ad61234b565b600091825260209182902060039190910201546040805160608101825263ffffffff90921680835290517f56a4728900000000000000000000000000000000000000000000000000000000815260048101829052909350909182019073ffffffffffffffffffffffffffffffffffffffff8716906356a4728990602401602060405180830381865afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b9190612451565b81526040517f622f17f600000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260209091019073ffffffffffffffffffffffffffffffffffffffff87169063622f17f690602401602060405180830381865afa1580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190612451565b81525083838151811061081c5761081c61234b565b60209081029190910101525060010161068e565b50806040516020016108429190612212565b604051602081830303815290604052935050505090565b61086161147b565b6000805467ffffffffffffffff90921674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60606001805480602002602001604051908101604052809291908181526020016000905b8282101561092a5760008481526020908190206040805160608101825260038602909201805463ffffffff168352600180820154848601526002909101549183019190915290835290920191016108d8565b50505050905090565b60603361dead14610970576040517f9cbfe06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517e0200000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090910460c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166022820152602a01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060008515610a6557610a60610a5b8888888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610cfc92505050565b611571565b610ade565b6001805480602002602001604051908101604052809291908181526020016000905b82821015610ad95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101610a87565b505050505b805190915015610bc6578051604051610afd908490839060200161246a565b604051602081830303815290604052925060005b8161ffff16811015610bc35783838281518110610b3057610b3061234b565b602002602001015160000151848381518110610b4e57610b4e61234b565b602002602001015160200151858481518110610b6c57610b6c61234b565b602002602001015160400151604051602001610b8b94939291906124b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529350600101610b11565b50505b5095945050505050565b610bd861147b565b73ffffffffffffffffffffffffffffffffffffffff8116610c80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c89816114fc565b50565b610c9461147b565b610ca060016000611fae565b60005b81811015610cf7576001838383818110610cbf57610cbf61234b565b835460018101855560009485526020909420606090910292909201926003029091019050610ced828261251d565b5050600101610ca3565b505050565b60608267ffffffffffffffff811115610d1757610d1761231c565b604051908082528060200260200182016040528015610dbd57816020015b604080516101608101825260006101008201818152610120830182905261014083018290528252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610d355790505b50905060005b83811015610e6257366000868684818110610de057610de061234b565b9050602002810190610df2919061237a565b91509150610e008282611838565b848481518110610e1257610e1261234b565b6020026020010181905250848381518110610e2f57610e2f61234b565b6020026020010151848481518110610e4957610e4961234b565b6020908102919091010151608001525050600101610dc3565b509392505050565b815115610f00576000610e7c83611571565b905060005b8151811015610efd576000828281518110610e9e57610e9e61234b565b6020026020010151600001519050610eb6848261196b565b610ef4576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b50600101610e81565b50505b6000610f0a6119c2565b9050610f16828261196b565b610cf7576040517f01992f2a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c77565b6000610f5e6119c2565b9050606060005b8451811015610fd6578263ffffffff16858281518110610f8757610f8761234b565b602002602001015163ffffffff1603610fce57838181518110610fac57610fac61234b565b6020026020010151806020019051810190610fc791906125e7565b9150610fd6565b600101610f65565b5060005b84518110156110ca576000858281518110610ff757610ff761234b565b6020026020010151905060008583815181106110155761101561234b565b602002602001015180602001905181019061103091906125e7565b9050600061103e8584611a58565b509050600061104d8388611a58565b915050808211156110ba576040517f1915975700000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e626f756e64436f756e74203e206f7574626f756e64436f756e74000000006044820152606401610c77565b505060019092019150610fda9050565b505050505050565b60005481517401000000000000000000000000000000000000000090910467ffffffffffffffff1610156111605760005481516040517f9db086050000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090920467ffffffffffffffff1660048301526024820152604401610c77565b805115610c895760008080805b845181101561130d57600085828151811061118a5761118a61234b565b602090810291909101810151805180519201516040517f5a0dfe4d00000000000000000000000000000000000000000000000000000000815263ffffffff9093166004840152602483015291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635a0dfe4d90604401602060405180830381865afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125991906126c4565b6112635750611305565b80515163ffffffff868116911614158061128257508051602001518414155b156112a3578051805160209091015190955093506112a08585611af5565b92505b6112ac83612715565b92508267ffffffffffffffff1681600001516040015167ffffffffffffffff1614611303576040517f50823c8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b60010161116d565b5050505050565b60606000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163463bd815db060e01b8660405160240161136a919061273c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516113f391906128a2565b60006040518083038185875af1925050503d8060008114611430576040519150601f19603f3d011682016040523d82523d6000602084013e611435565b606091505b509150915060006114468383611be4565b90506114506119c2565b816040516020016114629291906128be565b6040516020818303038152906040529350505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c77565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606060006001805480602002602001604051908101604052809291908181526020016000905b828210156115e95760008481526020908190206040805160608101825260038602909201805463ffffffff16835260018082015484860152600290910154918301919091529083529092019101611597565b5050505090506000835167ffffffffffffffff81111561160b5761160b61231c565b60405190808252806020026020018201604052801561167457816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116295790505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60005b85518110156117465760008682815181106116b8576116b861234b565b60200260200101516000015160000151905060006116d68683611d03565b9050600081121580156116f2575060006116f08684611d03565b125b1561173c578361170181612909565b9450508581815181106117165761171661234b565b60200260200101518585815181106117305761173061234b565b60200260200101819052505b505060010161169b565b506000811261183057600061175c826001612941565b90508067ffffffffffffffff8111156117775761177761231c565b6040519080825280602002602001820160405280156117e057816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816117955790505b50945060005b8181101561182d578381815181106118005761180061234b565b602002602001015186828151811061181a5761181a61234b565b60209081029190910101526001016117e6565b50505b505050919050565b6040805161016081018252600061010082018181526101208301829052610140830182905282526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260405180606001604052806118a78585611d78565b63ffffffff1681526020016118bc8585611d9b565b81526020016118cb8585611db4565b67ffffffffffffffff16905281526118e38383611dd7565b63ffffffff1660208201526118f88383611de7565b73ffffffffffffffffffffffffffffffffffffffff16604082015261191d8383611df9565b606082015261192c8383611e09565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060c082015292915050565b6000805b83518110156119b6578263ffffffff168482815181106119915761199161234b565b602002602001015163ffffffff16036119ae5760019150506119bc565b60010161196f565b50600090505b92915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a539190612954565b905090565b60008060005b8451811015611ae5578363ffffffff16858281518110611a8057611a8061234b565b60200260200101516000015163ffffffff1603611add57848181518110611aa957611aa961234b565b602002602001015160200151858281518110611ac757611ac761234b565b6020026020010151604001519250925050611aee565b600101611a5e565b50600080915091505b9250929050565b6040517fa0dd43fc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015263ffffffff84166024830152604482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a0dd43fc90606401602060405180830381865afa158015611bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdd9190612971565b9392505050565b60608215611c4e576040517f614cbd8a00000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f6e6f2072657665727400000000000000000000000000000000000000000000006044820152606401610c77565b7f8351eea700000000000000000000000000000000000000000000000000000000611c788361298e565b7fffffffff000000000000000000000000000000000000000000000000000000001614611cd357816040517f614cbd8a000000000000000000000000000000000000000000000000000000008152600401610c7791906121cc565b611ced6004808451611ce591906129da565b849190611e24565b905080806020019051810190611bdd91906129ed565b6000805b8351811015611d4f578263ffffffff16848281518110611d2957611d2961234b565b60200260200101516000015163ffffffff1603611d475790506119bc565b600101611d07565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b6000611d88600d600984866123df565b611d9191612409565b60e01c9392505050565b6000611dab602d600d84866123df565b611bdd91612a96565b6000611dc46009600184866123df565b611dcd91612ad2565b60c01c9392505050565b6000611d886031602d84866123df565b6000611bdd611df68484611f9e565b90565b6000611dab6071605184866123df565b366000611e1983607181876123df565b915091509250929050565b606081611e3281601f612941565b1015611e9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610c77565b611ea48284612941565b84511015611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610c77565b606082158015611f2d5760405191506000825260208201604052611f95565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611f66578051835260209283019201611f4e565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000611dab6051603184866123df565b5080546000825560030290600052602060002090810190610c8991905b8082111561200f5780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001681556000600182018190556002820155600301611fcb565b5090565b60008083601f84011261202557600080fd5b50813567ffffffffffffffff81111561203d57600080fd5b6020830191508360208260051b8501011115611aee57600080fd5b6000806000806000806060878903121561207157600080fd5b863567ffffffffffffffff8082111561208957600080fd5b6120958a838b01612013565b909850965060208901359150808211156120ae57600080fd5b6120ba8a838b01612013565b909650945060408901359150808211156120d357600080fd5b506120e089828a01612013565b979a9699509497509295939492505050565b6000806000806040858703121561210857600080fd5b843567ffffffffffffffff8082111561212057600080fd5b61212c88838901612013565b9096509450602087013591508082111561214557600080fd5b5061215287828801612013565b95989497509550505050565b60005b83811015612179578181015183820152602001612161565b50506000910152565b6000815180845261219a81602086016020860161215e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bdd6020830184612182565b67ffffffffffffffff81168114610c8957600080fd5b60006020828403121561220757600080fd5b8135611bdd816121df565b602080825282518282018190526000919060409081850190868401855b82811015612264578151805163ffffffff1685528681015187860152850151858501526060909301929085019060010161222f565b5091979650505050505050565b60006020828403121561228357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114611bdd57600080fd5b600080602083850312156122ba57600080fd5b823567ffffffffffffffff808211156122d257600080fd5b818501915085601f8301126122e657600080fd5b8135818111156122f557600080fd5b86602060608302850101111561230a57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126123af57600080fd5b83018035915067ffffffffffffffff8211156123ca57600080fd5b602001915036819003821315611aee57600080fd5b600080858511156123ef57600080fd5b838611156123fc57600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156124495780818660040360031b1b83161692505b505092915050565b60006020828403121561246357600080fd5b5051919050565b6000835161247c81846020880161215e565b60f09390931b7fffff000000000000000000000000000000000000000000000000000000000000169190920190815260020192915050565b600085516124c6818460208a0161215e565b60e09590951b7fffffffff0000000000000000000000000000000000000000000000000000000016919094019081526004810192909252602482015260440192915050565b63ffffffff81168114610c8957600080fd5b81356125288161250b565b63ffffffff81167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008354161782555060208201356001820155604082013560028201555050565b6040516060810167ffffffffffffffff811182821017156125925761259261231c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125df576125df61231c565b604052919050565b600060208083850312156125fa57600080fd5b825167ffffffffffffffff8082111561261257600080fd5b818501915085601f83011261262657600080fd5b8151818111156126385761263861231c565b612646848260051b01612598565b8181528481019250606091820284018501918883111561266557600080fd5b938501935b828510156126b85780858a0312156126825760008081fd5b61268a61256f565b85516126958161250b565b81528587015187820152604080870151908201528452938401939285019261266a565b50979650505050505050565b6000602082840312156126d657600080fd5b81518015158114611bdd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103612732576127326126e6565b6001019392505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015612894577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281516101406127c8858351805163ffffffff1682526020808201519083015260409081015167ffffffffffffffff16910152565b8882015160606127df8188018363ffffffff169052565b89840151915060806128088189018473ffffffffffffffffffffffffffffffffffffffff169052565b9084015160a0888101919091529084015160c08089019190915290840151915060e09061284c8289018473ffffffffffffffffffffffffffffffffffffffff169052565b8401516101008801849052915061286587840183612182565b93015186840361012088015292915061288090508183612182565b968901969450505090860190600101612765565b509098975050505050505050565b600082516128b481846020870161215e565b9190910192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b168152600082516128fb81600485016020870161215e565b919091016004019392505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361293a5761293a6126e6565b5060010190565b808201808211156119bc576119bc6126e6565b60006020828403121561296657600080fd5b8151611bdd8161250b565b60006020828403121561298357600080fd5b8151611bdd816121df565b6000815160208301517fffffffff00000000000000000000000000000000000000000000000000000000808216935060048310156118305760049290920360031b82901b161692915050565b818103818111156119bc576119bc6126e6565b6000602082840312156129ff57600080fd5b815167ffffffffffffffff80821115612a1757600080fd5b818401915084601f830112612a2b57600080fd5b815181811115612a3d57612a3d61231c565b612a6e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612598565b9150808252856020828501011115612a8557600080fd5b611f9581602084016020860161215e565b803560208310156119bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156124495760089490940360031b84901b169092169291505056fea2646970667358221220f6ca546091925a6ad4efbf2dcadc51d147ede502d9ccf8ab97abb1c6ea6b3fcd64736f6c63430008160033";
28863
28877
  static readonly abi: readonly [{
28864
28878
  readonly inputs: readonly [{
28865
28879
  readonly internalType: "address";
@@ -30796,7 +30810,7 @@ declare class OFT__factory extends ContractFactory {
30796
30810
  }): TransactionRequest;
30797
30811
  attach(address: string): OFT;
30798
30812
  connect(signer: Signer): OFT__factory;
30799
- static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200457538038062004575833981016040819052620000349162000278565b8383601284848181818162000049336200013e565b62000054816200013e565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b1580156200009e57600080fd5b505af1158015620000b3573d6000803e3d6000fd5b5050505050505050620000cb6200018e60201b60201c565b60ff168360ff161015620000f2576040516301e9714b60e41b815260040160405180910390fd5b620000ff6006846200031d565b6200010c90600a6200043c565b60a05250600891506200012290508382620004e5565b506009620001318282620004e5565b50505050505050620005b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bb57600080fd5b81516001600160401b0380821115620001d857620001d862000193565b604051601f8301601f19908116603f0116810190828211818310171562000203576200020362000193565b81604052838152602092508660208588010111156200022157600080fd5b600091505b8382101562000245578582018301518183018401529082019062000226565b6000602085830101528094505050505092915050565b80516001600160a01b03811681146200027357600080fd5b919050565b600080600080608085870312156200028f57600080fd5b84516001600160401b0380821115620002a757600080fd5b620002b588838901620001a9565b95506020870151915080821115620002cc57600080fd5b50620002db87828801620001a9565b935050620002ec604086016200025b565b9150620002fc606086016200025b565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000339576200033962000307565b92915050565b600181815b808511156200038057816000190482111562000364576200036462000307565b808516156200037257918102915b93841c939080029062000344565b509250929050565b600082620003995750600162000339565b81620003a85750600062000339565b8160018114620003c15760028114620003cc57620003ec565b600191505062000339565b60ff841115620003e057620003e062000307565b50506001821b62000339565b5060208310610133831016604e8410600b841016171562000411575081810a62000339565b6200041d83836200033f565b806000190482111562000434576200043462000307565b029392505050565b60006200044d60ff84168362000388565b9392505050565b600181811c908216806200046957607f821691505b6020821081036200048a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e0576000816000526020600020601f850160051c81016020861015620004bb5750805b601f850160051c820191505b81811015620004dc57828155600101620004c7565b5050505b505050565b81516001600160401b0381111562000501576200050162000193565b620005198162000512845462000454565b8462000490565b602080601f831160018114620005515760008415620005385750858301515b600019600386901b1c1916600185901b178555620004dc565b600085815260208120601f198616915b82811015620005825788860151825594840194600190910190840162000561565b5085821015620005a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051613f586200061d6000396000818161069d015281816123450152818161240901526124430152600081816105610152818161096f015281816114d9015281816119b00152818161200a015281816121490152818161258f01526126880152613f586000f3fe6080604052600436106102d15760003560e01c8063715018a611610179578063bb0b6a53116100d6578063d045a0dc1161008a578063f2fde38b11610064578063f2fde38b14610881578063fc0c546a146104e5578063ff7bd03d146108a157600080fd5b8063d045a0dc146107fb578063d42438851461080e578063dd62ed3e1461082e57600080fd5b8063bd815db0116100bb578063bd815db014610799578063c1e36500146107ac578063ca5eb5e1146107db57600080fd5b8063bb0b6a531461074c578063bc70b3541461077957600080fd5b8063963efcaa1161012d578063a9059cbb11610112578063a9059cbb146106df578063b731ea0a146106ff578063b98bd0701461072c57600080fd5b8063963efcaa1461068b578063a457c2d7146106bf57600080fd5b8063857749b01161015e578063857749b0146106375780638da5cb5b1461064b57806395d89b411461067657600080fd5b8063715018a6146105e65780637d25a05e146105fb57600080fd5b8063313ce5671161023257806352ae2879116101e65780635e280f11116101c05780635e280f111461054f5780636fc1b31e1461058357806370a08231146105a357600080fd5b806352ae2879146104e55780635535d461146104f85780635a0dfe4d1461051857600080fd5b80633950935111610217578063395093511461047757806346a40f751461049757806349e46017146104c457600080fd5b8063313ce567146104355780633400288b1461045757600080fd5b8063156a0d0f1161028957806318160ddd1161026e57806318160ddd146103e15780631f5e13341461040057806323b872dd1461041557600080fd5b8063156a0d0f146103c057806317442b70146103c057600080fd5b8063111ecdad116102ba578063111ecdad1461033157806313137d6514610383578063134d4f251461039857600080fd5b806306fdde03146102d6578063095ea7b314610301575b600080fd5b3480156102e257600080fd5b506102eb6108c1565b6040516102f89190612d03565b60405180910390f35b34801561030d57600080fd5b5061032161031c366004612d48565b610953565b60405190151581526020016102f8565b34801561033d57600080fd5b5060045461035e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f8565b610396610391366004612dce565b61096d565b005b3480156103a457600080fd5b506103ad600281565b60405161ffff90911681526020016102f8565b3480156103cc57600080fd5b506040805160018082526020820152016102f8565b3480156103ed57600080fd5b506007545b6040519081526020016102f8565b34801561040c57600080fd5b506103ad600181565b34801561042157600080fd5b50610321610430366004612e6e565b610a6c565b34801561044157600080fd5b5060125b60405160ff90911681526020016102f8565b34801561046357600080fd5b50610396610472366004612ec3565b610a92565b34801561048357600080fd5b50610321610492366004612d48565b610af0565b3480156104a357600080fd5b506104b76104b2366004612eff565b610b3c565b6040516102f89190612fc0565b6104d76104d2366004612fd7565b610bb2565b6040516102f89291906130d9565b3480156104f157600080fd5b503061035e565b34801561050457600080fd5b506102eb61051336600461313e565b610cc2565b34801561052457600080fd5b50610321610533366004612ec3565b63ffffffff919091166000908152600160205260409020541490565b34801561055b57600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058f57600080fd5b5061039661059e366004613171565b610d67565b3480156105af57600080fd5b506103f26105be366004613171565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b3480156105f257600080fd5b50610396610de9565b34801561060757600080fd5b5061061e610616366004612ec3565b600092915050565b60405167ffffffffffffffff90911681526020016102f8565b34801561064357600080fd5b506006610445565b34801561065757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661035e565b34801561068257600080fd5b506102eb610dfd565b34801561069757600080fd5b506103f27f000000000000000000000000000000000000000000000000000000000000000081565b3480156106cb57600080fd5b506103216106da366004612d48565b610e0c565b3480156106eb57600080fd5b506103216106fa366004612d48565b610ee8565b34801561070b57600080fd5b5060025461035e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561073857600080fd5b506103966107473660046131d3565b610ef6565b34801561075857600080fd5b506103f2610767366004613209565b60016020526000908152604090205481565b34801561078557600080fd5b506102eb610794366004613224565b611057565b6103966107a73660046131d3565b6111eb565b3480156107b857600080fd5b506107cc6107c7366004613285565b6113b9565b6040516102f8939291906132d9565b3480156107e757600080fd5b506103966107f6366004613171565b61148c565b610396610809366004612dce565b611538565b34801561081a57600080fd5b50610396610829366004613171565b611580565b34801561083a57600080fd5b506103f2610849366004613390565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205490565b34801561088d57600080fd5b5061039661089c366004613171565b6115fb565b3480156108ad57600080fd5b506103216108bc3660046133c9565b6116b2565b6060600880546108d0906133e5565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc906133e5565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000336109618185856116e8565b60019150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109e3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109fd906109f8908a613209565b61189b565b14610a5457610a0f6020880188613209565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016109da565b610a63878787878787876118f0565b50505050505050565b600033610a7a858285611a7f565b610a85858585611b56565b60019150505b9392505050565b610a9a611dcc565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906109619082908690610b37908790613461565b6116e8565b60408051808201909152600080825260208201526000610b7160408b013560608c0135610b6c60208e018e613209565b611e4d565b915050600080610b858c8c8c8b8b88611eaa565b9092509050610ba2610b9a60208e018e613209565b83838c611ff4565b9c9b505050505050505050505050565b610bba612c4d565b6040805180820190915260008082526020820152600080610bf68d604001358e606001358f6000016020810190610bf19190613209565b6120e2565b91509150600080610c0b8f8f8f8d8d88611eaa565b91509150610c3e8f6000016020810190610c259190613209565b83838f803603810190610c3891906134cc565b8f612116565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e604051610ca89493929190613547565b60405180910390a350505050995099975050505050505050565b600360209081526000928352604080842090915290825290208054610ce6906133e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d12906133e5565b8015610d5f5780601f10610d3457610100808354040283529160200191610d5f565b820191906000526020600020905b815481529060010190602001808311610d4257829003601f168201915b505050505081565b610d6f611dcc565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610df1611dcc565b610dfb600061222e565b565b6060600980546108d0906133e5565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109da565b610edd82868684036116e8565b506001949350505050565b600033610961818585611b56565b610efe611dcc565b60005b8181101561102557610f43838383818110610f1e57610f1e613571565b9050602002810190610f3091906135a0565b610f3e9060408101906135de565b6122a3565b828282818110610f5557610f55613571565b9050602002810190610f6791906135a0565b610f759060408101906135de565b60036000868686818110610f8b57610f8b613571565b9050602002810190610f9d91906135a0565b610fab906020810190613209565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610fd957610fd9613571565b9050602002810190610feb91906135a0565b610ffc906040810190602001613643565b61ffff16815260208101919091526040016000209161101c9190836136ae565b50600101610f01565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748282604051610ae49291906137c8565b63ffffffff8416600090815260036020908152604080832061ffff8716845290915281208054606092919061108b906133e5565b80601f01602080910402602001604051908101604052809291908181526020018280546110b7906133e5565b80156111045780601f106110d957610100808354040283529160200191611104565b820191906000526020600020905b8154815290600101906020018083116110e757829003601f168201915b5050505050905080516000036111545783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506111e39350505050565b60008390036111645790506111e3565b600283106111ad5761117684846122a3565b806111848460028188613906565b60405160200161119693929190613930565b6040516020818303038152906040529150506111e3565b83836040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016109da929190613958565b949350505050565b60005b818110156112f4573683838381811061120957611209613571565b905060200281019061121b919061396c565b905061124e61122d6020830183613209565b602083013563ffffffff919091166000908152600160205260409020541490565b61125857506112ec565b3063d045a0dc60c08301358360a08101356112776101008301836135de565b611288610100890160e08a01613171565b6112966101208a018a6135de565b6040518963ffffffff1660e01b81526004016112b897969594939291906139b6565b6000604051808303818588803b1580156112d157600080fd5b505af11580156112e5573d6000803e3d6000fd5b5050505050505b6001016111ee565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611340573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113869190810190613a4a565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016109da9190612d03565b604080518082019091526000808252602082015260606113ec604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611448565b6040805180820190915260008152606060208201528152602001906001900390816114205790505b50935060008061146860408b013560608c0135610b6c60208e018e613209565b604080518082019091529182526020820152969a9599509597509395505050505050565b611494611dcc565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b5050505050565b333014611571576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6387878787878787610a54565b611588611dcc565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610dde565b611603611dcc565b73ffffffffffffffffffffffffffffffffffffffff81166116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109da565b6116af8161222e565b50565b60006020820180359060019083906116ca9086613209565b63ffffffff1681526020810191909152604001600020541492915050565b73ffffffffffffffffffffffffffffffffffffffff831661178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff821661182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b63ffffffff811660009081526001602052604081205480610967576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016109da565b60006119026118ff8787612303565b90565b90506000611918611913888861231b565b61233e565b90506000611933838361192e60208e018e613209565b612374565b90506028871115611a2057600061197061195360608d0160408e01613b0a565b61196060208e018e613209565b8461196b8d8d612388565b6123d3565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906119ec9087908e906000908790600401613b27565b600060405180830381600087803b158015611a0657600080fd5b505af1158015611a1a573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b505781811015611b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109da565b611b5084848484036116e8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611bf9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff8216611c9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205481811015611d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526005602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dbf9086815260200190565b60405180910390a3611b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109da565b600080611e5985612405565b915081905083811015611ea2576040517f71c4efed00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044016109da565b935093915050565b6060806000611efc8960200135611ec08661243c565b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061246892505050565b9093509050600081611f0f576001611f12565b60025b9050611f2c611f2460208c018c613209565b828b8b611057565b60045490935073ffffffffffffffffffffffffffffffffffffffff1615611fe757600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb91611fa4918891889101613b66565b602060405180830381865afa158015611fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe59190613b8b565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016120648961189b565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612099929190613ba8565b6040805180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190613c7c565b95945050505050565b6000808415612100576120f68585856124fa565b9092509050611ea2565b61210a8484612517565b90969095509350505050565b61211e612c4d565b600061212d846000015161254a565b60208501519091501561214757612147846020015161258b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016121a48c61189b565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016121e0929190613ba8565b60806040518083038185885af11580156121fe573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122239190613c98565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006122b26002828486613906565b6122bb91613d00565b60f01c9050600381146122fe5782826040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016109da929190613958565b505050565b60006123126020828486613906565b610a8b91613d48565b600061232b602860208486613906565b61233491613d84565b60c01c9392505050565b60006109677f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613dca565b600061238084846126b1565b509092915050565b60606123978260288186613906565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b6060848484846040516020016123ec9493929190613de1565b6040516020818303038152906040529050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006124328184613e5f565b6109679190613dca565b60006109677f000000000000000000000000000000000000000000000000000000000000000083613e5f565b80516060901515806124c95784846040516020016124b592919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b6040516020818303038152906040526124f0565b848433856040516020016124e09493929190613e9a565b6040516020818303038152906040525b9150935093915050565b600080612508858585611e4d565b9092509050611ea233836127a6565b306000908152600560205260408120548190612534908585611e4d565b909250905061254330836127a6565b9250929050565b6000813414612587576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016109da565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c9190613ef3565b905073ffffffffffffffffffffffffffffffffffffffff811661266b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126ad73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561296c565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109da565b80600760008282546127409190613461565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216612849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054818110156128ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208686039055600780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166024830152848116604483015260648083018590528351808403909101815260849092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152611b5092879291600091612a3f918516908490612aec565b9050805160001480612a60575080806020019051810190612a609190613b8b565b6122fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109da565b60606111e38484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b209190613f10565b60006040518083038185875af1925050503d8060008114612b5d576040519150601f19603f3d011682016040523d82523d6000602084013e612b62565b606091505b50915091506122238783838760608315612c04578251600003612bfd5773ffffffffffffffffffffffffffffffffffffffff85163b612bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109da565b50816111e3565b6111e38383815115612c195781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da9190612d03565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612c90604051806040016040528060008152602001600081525090565b905290565b60005b83811015612cb0578181015183820152602001612c98565b50506000910152565b60008151808452612cd1816020860160208601612c95565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a8b6020830184612cb9565b73ffffffffffffffffffffffffffffffffffffffff811681146116af57600080fd5b8035612d4381612d16565b919050565b60008060408385031215612d5b57600080fd5b8235612d6681612d16565b946020939093013593505050565b600060608284031215612d8657600080fd5b50919050565b60008083601f840112612d9e57600080fd5b50813567ffffffffffffffff811115612db657600080fd5b60208301915083602082850101111561254357600080fd5b600080600080600080600060e0888a031215612de957600080fd5b612df38989612d74565b965060608801359550608088013567ffffffffffffffff80821115612e1757600080fd5b612e238b838c01612d8c565b909750955060a08a01359150612e3882612d16565b90935060c08901359080821115612e4e57600080fd5b50612e5b8a828b01612d8c565b989b979a50959850939692959293505050565b600080600060608486031215612e8357600080fd5b8335612e8e81612d16565b92506020840135612e9e81612d16565b929592945050506040919091013590565b803563ffffffff81168114612d4357600080fd5b60008060408385031215612ed657600080fd5b612d6683612eaf565b600060808284031215612d8657600080fd5b80151581146116af57600080fd5b600080600080600080600080610100898b031215612f1c57600080fd5b612f268a8a612edf565b9750608089013567ffffffffffffffff80821115612f4357600080fd5b612f4f8c838d01612d8c565b909950975060a08b01359150612f6482612ef1565b90955060c08a01359080821115612f7a57600080fd5b612f868c838d01612d8c565b909650945060e08b0135915080821115612f9f57600080fd5b50612fac8b828c01612d8c565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610967565b6000806000806000806000806000898b03610140811215612ff757600080fd5b6130018c8c612edf565b995060808b013567ffffffffffffffff8082111561301e57600080fd5b61302a8e838f01612d8c565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608401121561306257600080fd5b60a08d01985061307460e08e01612d38565b97506101008d013592508083111561308b57600080fd5b6130978e848f01612d8c565b90975095506101208d01359250869150808311156130b457600080fd5b50506130c28c828d01612d8c565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff60208501511660208301526040840151613115604084018280518252602090810151910152565b5082516080830152602083015160a0830152610a8b565b803561ffff81168114612d4357600080fd5b6000806040838503121561315157600080fd5b61315a83612eaf565b91506131686020840161312c565b90509250929050565b60006020828403121561318357600080fd5b8135610a8b81612d16565b60008083601f8401126131a057600080fd5b50813567ffffffffffffffff8111156131b857600080fd5b6020830191508360208260051b850101111561254357600080fd5b600080602083850312156131e657600080fd5b823567ffffffffffffffff8111156131fd57600080fd5b61210a8582860161318e565b60006020828403121561321b57600080fd5b610a8b82612eaf565b6000806000806060858703121561323a57600080fd5b61324385612eaf565b93506132516020860161312c565b9250604085013567ffffffffffffffff81111561326d57600080fd5b61327987828801612d8c565b95989497509550505050565b600080600060a0848603121561329a57600080fd5b6132a48585612edf565b9250608084013567ffffffffffffffff8111156132c057600080fd5b6132cc86828701612d8c565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015613372578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261335f87890182612cb9565b9750509382019390820190600101613315565b505087516060880152505050602085015160808501525090506111e3565b600080604083850312156133a357600080fd5b82356133ae81612d16565b915060208301356133be81612d16565b809150509250929050565b6000606082840312156133db57600080fd5b610a8b8383612d74565b600181811c908216806133f957607f821691505b602082108103612d86577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561096757610967613432565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156134c6576134c6613474565b60405290565b6000604082840312156134de57600080fd5b6134e66134a3565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8481528360208201526060604082015260006135676060830184866134fe565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126135d457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261361357600080fd5b83018035915067ffffffffffffffff82111561362e57600080fd5b60200191503681900382131561254357600080fd5b60006020828403121561365557600080fd5b610a8b8261312c565b601f8211156122fe576000816000526020600020601f850160051c810160208610156136875750805b601f850160051c820191505b818110156136a657828155600101613693565b505050505050565b67ffffffffffffffff8311156136c6576136c6613474565b6136da836136d483546133e5565b8361365e565b6000601f84116001811461372c57600085156136f65750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611531565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561377b578685013582556020948501946001909201910161375b565b50868210156137b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b888110156138f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261384857600080fd5b8a01606063ffffffff61385a83612eaf565b16855261ffff61386b89840161312c565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126138a457600080fd5b90910187810191903567ffffffffffffffff8111156138c257600080fd5b8036038313156138d157600080fd5b81888701526138e382870182856134fe565b968901969550505091860191506001016137e7565b509098975050505050505050565b6000808585111561391657600080fd5b8386111561392357600080fd5b5050820193919092039150565b60008451613942818460208901612c95565b8201838582376000930192835250909392505050565b6020815260006111e36020830184866134fe565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126135d457600080fd5b67ffffffffffffffff811681146116af57600080fd5b63ffffffff6139c489612eaf565b16815260208801356020820152600060408901356139e1816139a0565b67ffffffffffffffff811660408401525087606083015260e06080830152613a0d60e0830187896134fe565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152613a3c8185876134fe565b9a9950505050505050505050565b600060208284031215613a5c57600080fd5b815167ffffffffffffffff80821115613a7457600080fd5b818401915084601f830112613a8857600080fd5b815181811115613a9a57613a9a613474565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613ae057613ae0613474565b81604052828152876020848701011115613af957600080fd5b612223836020830160208801612c95565b600060208284031215613b1c57600080fd5b8135610a8b816139a0565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff831660408201526080606082015260006135676080830184612cb9565b604081526000613b796040830185612cb9565b82810360208401526120d98185612cb9565b600060208284031215613b9d57600080fd5b8151610a8b81612ef1565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152613bde60e0840182612cb9565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613c198282612cb9565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215613c5e57600080fd5b613c666134a3565b9050815181526020820151602082015292915050565b600060408284031215613c8e57600080fd5b610a8b8383613c4c565b600060808284031215613caa57600080fd5b6040516060810181811067ffffffffffffffff82111715613ccd57613ccd613474565b604052825181526020830151613ce2816139a0565b6020820152613cf48460408501613c4c565b60408201529392505050565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015613d405780818660020360031b1b83161692505b505092915050565b80356020831015610967577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015613d405760089490940360031b84901b1690921692915050565b808202811582820484141761096757610967613432565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251613e4f81602c850160208701612c95565b91909101602c0195945050505050565b600082613e95577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251613ee3816048850160208701612c95565b9190910160480195945050505050565b600060208284031215613f0557600080fd5b8151610a8b81612d16565b600082516135d4818460208701612c9556fea264697066735822122048dc5827b1ceb43471eb36cb8269af87d47de0ab1f993b478daf5020aa540bf264736f6c63430008160033";
30813
+ static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200457538038062004575833981016040819052620000349162000278565b8383601284848181818162000049336200013e565b62000054816200013e565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b1580156200009e57600080fd5b505af1158015620000b3573d6000803e3d6000fd5b5050505050505050620000cb6200018e60201b60201c565b60ff168360ff161015620000f2576040516301e9714b60e41b815260040160405180910390fd5b620000ff6006846200031d565b6200010c90600a6200043c565b60a05250600891506200012290508382620004e5565b506009620001318282620004e5565b50505050505050620005b1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001bb57600080fd5b81516001600160401b0380821115620001d857620001d862000193565b604051601f8301601f19908116603f0116810190828211818310171562000203576200020362000193565b81604052838152602092508660208588010111156200022157600080fd5b600091505b8382101562000245578582018301518183018401529082019062000226565b6000602085830101528094505050505092915050565b80516001600160a01b03811681146200027357600080fd5b919050565b600080600080608085870312156200028f57600080fd5b84516001600160401b0380821115620002a757600080fd5b620002b588838901620001a9565b95506020870151915080821115620002cc57600080fd5b50620002db87828801620001a9565b935050620002ec604086016200025b565b9150620002fc606086016200025b565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000339576200033962000307565b92915050565b600181815b808511156200038057816000190482111562000364576200036462000307565b808516156200037257918102915b93841c939080029062000344565b509250929050565b600082620003995750600162000339565b81620003a85750600062000339565b8160018114620003c15760028114620003cc57620003ec565b600191505062000339565b60ff841115620003e057620003e062000307565b50506001821b62000339565b5060208310610133831016604e8410600b841016171562000411575081810a62000339565b6200041d83836200033f565b806000190482111562000434576200043462000307565b029392505050565b60006200044d60ff84168362000388565b9392505050565b600181811c908216806200046957607f821691505b6020821081036200048a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e0576000816000526020600020601f850160051c81016020861015620004bb5750805b601f850160051c820191505b81811015620004dc57828155600101620004c7565b5050505b505050565b81516001600160401b0381111562000501576200050162000193565b620005198162000512845462000454565b8462000490565b602080601f831160018114620005515760008415620005385750858301515b600019600386901b1c1916600185901b178555620004dc565b600085815260208120601f198616915b82811015620005825788860151825594840194600190910190840162000561565b5085821015620005a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051613f586200061d6000396000818161069d015281816123450152818161240901526124430152600081816105610152818161096f015281816114d9015281816119b00152818161200a015281816121490152818161258f01526126880152613f586000f3fe6080604052600436106102d15760003560e01c8063715018a611610179578063bb0b6a53116100d6578063d045a0dc1161008a578063f2fde38b11610064578063f2fde38b14610881578063fc0c546a146104e5578063ff7bd03d146108a157600080fd5b8063d045a0dc146107fb578063d42438851461080e578063dd62ed3e1461082e57600080fd5b8063bd815db0116100bb578063bd815db014610799578063c1e36500146107ac578063ca5eb5e1146107db57600080fd5b8063bb0b6a531461074c578063bc70b3541461077957600080fd5b8063963efcaa1161012d578063a9059cbb11610112578063a9059cbb146106df578063b731ea0a146106ff578063b98bd0701461072c57600080fd5b8063963efcaa1461068b578063a457c2d7146106bf57600080fd5b8063857749b01161015e578063857749b0146106375780638da5cb5b1461064b57806395d89b411461067657600080fd5b8063715018a6146105e65780637d25a05e146105fb57600080fd5b8063313ce5671161023257806352ae2879116101e65780635e280f11116101c05780635e280f111461054f5780636fc1b31e1461058357806370a08231146105a357600080fd5b806352ae2879146104e55780635535d461146104f85780635a0dfe4d1461051857600080fd5b80633950935111610217578063395093511461047757806346a40f751461049757806349e46017146104c457600080fd5b8063313ce567146104355780633400288b1461045757600080fd5b8063156a0d0f1161028957806318160ddd1161026e57806318160ddd146103e15780631f5e13341461040057806323b872dd1461041557600080fd5b8063156a0d0f146103c057806317442b70146103c057600080fd5b8063111ecdad116102ba578063111ecdad1461033157806313137d6514610383578063134d4f251461039857600080fd5b806306fdde03146102d6578063095ea7b314610301575b600080fd5b3480156102e257600080fd5b506102eb6108c1565b6040516102f89190612d03565b60405180910390f35b34801561030d57600080fd5b5061032161031c366004612d48565b610953565b60405190151581526020016102f8565b34801561033d57600080fd5b5060045461035e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102f8565b610396610391366004612dce565b61096d565b005b3480156103a457600080fd5b506103ad600281565b60405161ffff90911681526020016102f8565b3480156103cc57600080fd5b506040805160018082526020820152016102f8565b3480156103ed57600080fd5b506007545b6040519081526020016102f8565b34801561040c57600080fd5b506103ad600181565b34801561042157600080fd5b50610321610430366004612e6e565b610a6c565b34801561044157600080fd5b5060125b60405160ff90911681526020016102f8565b34801561046357600080fd5b50610396610472366004612ec3565b610a92565b34801561048357600080fd5b50610321610492366004612d48565b610af0565b3480156104a357600080fd5b506104b76104b2366004612eff565b610b3c565b6040516102f89190612fc0565b6104d76104d2366004612fd7565b610bb2565b6040516102f89291906130d9565b3480156104f157600080fd5b503061035e565b34801561050457600080fd5b506102eb61051336600461313e565b610cc2565b34801561052457600080fd5b50610321610533366004612ec3565b63ffffffff919091166000908152600160205260409020541490565b34801561055b57600080fd5b5061035e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058f57600080fd5b5061039661059e366004613171565b610d67565b3480156105af57600080fd5b506103f26105be366004613171565b73ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b3480156105f257600080fd5b50610396610de9565b34801561060757600080fd5b5061061e610616366004612ec3565b600092915050565b60405167ffffffffffffffff90911681526020016102f8565b34801561064357600080fd5b506006610445565b34801561065757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661035e565b34801561068257600080fd5b506102eb610dfd565b34801561069757600080fd5b506103f27f000000000000000000000000000000000000000000000000000000000000000081565b3480156106cb57600080fd5b506103216106da366004612d48565b610e0c565b3480156106eb57600080fd5b506103216106fa366004612d48565b610ee8565b34801561070b57600080fd5b5060025461035e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561073857600080fd5b506103966107473660046131d3565b610ef6565b34801561075857600080fd5b506103f2610767366004613209565b60016020526000908152604090205481565b34801561078557600080fd5b506102eb610794366004613224565b611057565b6103966107a73660046131d3565b6111eb565b3480156107b857600080fd5b506107cc6107c7366004613285565b6113b9565b6040516102f8939291906132d9565b3480156107e757600080fd5b506103966107f6366004613171565b61148c565b610396610809366004612dce565b611538565b34801561081a57600080fd5b50610396610829366004613171565b611580565b34801561083a57600080fd5b506103f2610849366004613390565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205490565b34801561088d57600080fd5b5061039661089c366004613171565b6115fb565b3480156108ad57600080fd5b506103216108bc3660046133c9565b6116b2565b6060600880546108d0906133e5565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc906133e5565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b6000336109618185856116e8565b60019150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109e3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109fd906109f8908a613209565b61189b565b14610a5457610a0f6020880188613209565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016109da565b610a63878787878787876118f0565b50505050505050565b600033610a7a858285611a7f565b610a85858585611b56565b60019150505b9392505050565b610a9a611dcc565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906109619082908690610b37908790613461565b6116e8565b60408051808201909152600080825260208201526000610b7160408b013560608c0135610b6c60208e018e613209565b611e4d565b915050600080610b858c8c8c8b8b88611eaa565b9092509050610ba2610b9a60208e018e613209565b83838c611ff4565b9c9b505050505050505050505050565b610bba612c4d565b6040805180820190915260008082526020820152600080610bf68d604001358e606001358f6000016020810190610bf19190613209565b6120e2565b91509150600080610c0b8f8f8f8d8d88611eaa565b91509150610c3e8f6000016020810190610c259190613209565b83838f803603810190610c3891906134cc565b8f612116565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e604051610ca89493929190613547565b60405180910390a350505050995099975050505050505050565b600360209081526000928352604080842090915290825290208054610ce6906133e5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d12906133e5565b8015610d5f5780601f10610d3457610100808354040283529160200191610d5f565b820191906000526020600020905b815481529060010190602001808311610d4257829003601f168201915b505050505081565b610d6f611dcc565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610df1611dcc565b610dfb600061222e565b565b6060600980546108d0906133e5565b33600081815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109da565b610edd82868684036116e8565b506001949350505050565b600033610961818585611b56565b610efe611dcc565b60005b8181101561102557610f43838383818110610f1e57610f1e613571565b9050602002810190610f3091906135a0565b610f3e9060408101906135de565b6122a3565b828282818110610f5557610f55613571565b9050602002810190610f6791906135a0565b610f759060408101906135de565b60036000868686818110610f8b57610f8b613571565b9050602002810190610f9d91906135a0565b610fab906020810190613209565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610fd957610fd9613571565b9050602002810190610feb91906135a0565b610ffc906040810190602001613643565b61ffff16815260208101919091526040016000209161101c9190836136ae565b50600101610f01565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748282604051610ae49291906137c8565b63ffffffff8416600090815260036020908152604080832061ffff8716845290915281208054606092919061108b906133e5565b80601f01602080910402602001604051908101604052809291908181526020018280546110b7906133e5565b80156111045780601f106110d957610100808354040283529160200191611104565b820191906000526020600020905b8154815290600101906020018083116110e757829003601f168201915b5050505050905080516000036111545783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506111e39350505050565b60008390036111645790506111e3565b600283106111ad5761117684846122a3565b806111848460028188613906565b60405160200161119693929190613930565b6040516020818303038152906040529150506111e3565b83836040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016109da929190613958565b949350505050565b60005b818110156112f4573683838381811061120957611209613571565b905060200281019061121b919061396c565b905061124e61122d6020830183613209565b602083013563ffffffff919091166000908152600160205260409020541490565b61125857506112ec565b3063d045a0dc60c08301358360a08101356112776101008301836135de565b611288610100890160e08a01613171565b6112966101208a018a6135de565b6040518963ffffffff1660e01b81526004016112b897969594939291906139b6565b6000604051808303818588803b1580156112d157600080fd5b505af11580156112e5573d6000803e3d6000fd5b5050505050505b6001016111ee565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015611340573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113869190810190613a4a565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016109da9190612d03565b604080518082019091526000808252602082015260606113ec604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611448565b6040805180820190915260008152606060208201528152602001906001900390816114205790505b50935060008061146860408b013560608c0135610b6c60208e018e613209565b604080518082019091529182526020820152969a9599509597509395505050505050565b611494611dcc565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b5050505050565b333014611571576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a6387878787878787610a54565b611588611dcc565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610dde565b611603611dcc565b73ffffffffffffffffffffffffffffffffffffffff81166116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109da565b6116af8161222e565b50565b60006020820180359060019083906116ca9086613209565b63ffffffff1681526020810191909152604001600020541492915050565b73ffffffffffffffffffffffffffffffffffffffff831661178a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff821661182d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b63ffffffff811660009081526001602052604081205480610967576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016109da565b60006119026118ff8787612303565b90565b90506000611918611913888861231b565b61233e565b90506000611933838361192e60208e018e613209565b612374565b90506028871115611a2057600061197061195360608d0160408e01613b0a565b61196060208e018e613209565b8461196b8d8d612388565b6123d3565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906119ec9087908e906000908790600401613b27565b600060405180830381600087803b158015611a0657600080fd5b505af1158015611a1a573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611b505781811015611b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016109da565b611b5084848484036116e8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611bf9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff8216611c9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205481811015611d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526005602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dbf9086815260200190565b60405180910390a3611b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109da565b600080611e5985612405565b915081905083811015611ea2576040517f71c4efed00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044016109da565b935093915050565b6060806000611efc8960200135611ec08661243c565b88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061246892505050565b9093509050600081611f0f576001611f12565b60025b9050611f2c611f2460208c018c613209565b828b8b611057565b60045490935073ffffffffffffffffffffffffffffffffffffffff1615611fe757600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb91611fa4918891889101613b66565b602060405180830381865afa158015611fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe59190613b8b565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff1681526020016120648961189b565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401612099929190613ba8565b6040805180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d99190613c7c565b95945050505050565b6000808415612100576120f68585856124fa565b9092509050611ea2565b61210a8484612517565b90969095509350505050565b61211e612c4d565b600061212d846000015161254a565b60208501519091501561214757612147846020015161258b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016121a48c61189b565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016121e0929190613ba8565b60806040518083038185885af11580156121fe573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122239190613c98565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006122b26002828486613906565b6122bb91613d00565b60f01c9050600381146122fe5782826040517f9a6d49cd0000000000000000000000000000000000000000000000000000000081526004016109da929190613958565b505050565b60006123126020828486613906565b610a8b91613d48565b600061232b602860208486613906565b61233491613d84565b60c01c9392505050565b60006109677f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613dca565b600061238084846126b1565b509092915050565b60606123978260288186613906565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b6060848484846040516020016123ec9493929190613de1565b6040516020818303038152906040529050949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006124328184613e5f565b6109679190613dca565b60006109677f000000000000000000000000000000000000000000000000000000000000000083613e5f565b80516060901515806124c95784846040516020016124b592919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b6040516020818303038152906040526124f0565b848433856040516020016124e09493929190613e9a565b6040516020818303038152906040525b9150935093915050565b600080612508858585611e4d565b9092509050611ea233836127a6565b306000908152600560205260408120548190612534908585611e4d565b909250905061254330836127a6565b9250929050565b6000813414612587576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016109da565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c9190613ef3565b905073ffffffffffffffffffffffffffffffffffffffff811661266b576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126ad73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561296c565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661272e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109da565b80600760008282546127409190613461565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216612849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054818110156128ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016109da565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208686039055600780548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8581166024830152848116604483015260648083018590528351808403909101815260849092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152611b5092879291600091612a3f918516908490612aec565b9050805160001480612a60575080806020019051810190612a609190613b8b565b6122fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016109da565b60606111e38484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b209190613f10565b60006040518083038185875af1925050503d8060008114612b5d576040519150601f19603f3d011682016040523d82523d6000602084013e612b62565b606091505b50915091506122238783838760608315612c04578251600003612bfd5773ffffffffffffffffffffffffffffffffffffffff85163b612bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109da565b50816111e3565b6111e38383815115612c195781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da9190612d03565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612c90604051806040016040528060008152602001600081525090565b905290565b60005b83811015612cb0578181015183820152602001612c98565b50506000910152565b60008151808452612cd1816020860160208601612c95565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a8b6020830184612cb9565b73ffffffffffffffffffffffffffffffffffffffff811681146116af57600080fd5b8035612d4381612d16565b919050565b60008060408385031215612d5b57600080fd5b8235612d6681612d16565b946020939093013593505050565b600060608284031215612d8657600080fd5b50919050565b60008083601f840112612d9e57600080fd5b50813567ffffffffffffffff811115612db657600080fd5b60208301915083602082850101111561254357600080fd5b600080600080600080600060e0888a031215612de957600080fd5b612df38989612d74565b965060608801359550608088013567ffffffffffffffff80821115612e1757600080fd5b612e238b838c01612d8c565b909750955060a08a01359150612e3882612d16565b90935060c08901359080821115612e4e57600080fd5b50612e5b8a828b01612d8c565b989b979a50959850939692959293505050565b600080600060608486031215612e8357600080fd5b8335612e8e81612d16565b92506020840135612e9e81612d16565b929592945050506040919091013590565b803563ffffffff81168114612d4357600080fd5b60008060408385031215612ed657600080fd5b612d6683612eaf565b600060808284031215612d8657600080fd5b80151581146116af57600080fd5b600080600080600080600080610100898b031215612f1c57600080fd5b612f268a8a612edf565b9750608089013567ffffffffffffffff80821115612f4357600080fd5b612f4f8c838d01612d8c565b909950975060a08b01359150612f6482612ef1565b90955060c08a01359080821115612f7a57600080fd5b612f868c838d01612d8c565b909650945060e08b0135915080821115612f9f57600080fd5b50612fac8b828c01612d8c565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610967565b6000806000806000806000806000898b03610140811215612ff757600080fd5b6130018c8c612edf565b995060808b013567ffffffffffffffff8082111561301e57600080fd5b61302a8e838f01612d8c565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608401121561306257600080fd5b60a08d01985061307460e08e01612d38565b97506101008d013592508083111561308b57600080fd5b6130978e848f01612d8c565b90975095506101208d01359250869150808311156130b457600080fd5b50506130c28c828d01612d8c565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff60208501511660208301526040840151613115604084018280518252602090810151910152565b5082516080830152602083015160a0830152610a8b565b803561ffff81168114612d4357600080fd5b6000806040838503121561315157600080fd5b61315a83612eaf565b91506131686020840161312c565b90509250929050565b60006020828403121561318357600080fd5b8135610a8b81612d16565b60008083601f8401126131a057600080fd5b50813567ffffffffffffffff8111156131b857600080fd5b6020830191508360208260051b850101111561254357600080fd5b600080602083850312156131e657600080fd5b823567ffffffffffffffff8111156131fd57600080fd5b61210a8582860161318e565b60006020828403121561321b57600080fd5b610a8b82612eaf565b6000806000806060858703121561323a57600080fd5b61324385612eaf565b93506132516020860161312c565b9250604085013567ffffffffffffffff81111561326d57600080fd5b61327987828801612d8c565b95989497509550505050565b600080600060a0848603121561329a57600080fd5b6132a48585612edf565b9250608084013567ffffffffffffffff8111156132c057600080fd5b6132cc86828701612d8c565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015613372578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261335f87890182612cb9565b9750509382019390820190600101613315565b505087516060880152505050602085015160808501525090506111e3565b600080604083850312156133a357600080fd5b82356133ae81612d16565b915060208301356133be81612d16565b809150509250929050565b6000606082840312156133db57600080fd5b610a8b8383612d74565b600181811c908216806133f957607f821691505b602082108103612d86577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561096757610967613432565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156134c6576134c6613474565b60405290565b6000604082840312156134de57600080fd5b6134e66134a3565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8481528360208201526060604082015260006135676060830184866134fe565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126135d457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261361357600080fd5b83018035915067ffffffffffffffff82111561362e57600080fd5b60200191503681900382131561254357600080fd5b60006020828403121561365557600080fd5b610a8b8261312c565b601f8211156122fe576000816000526020600020601f850160051c810160208610156136875750805b601f850160051c820191505b818110156136a657828155600101613693565b505050505050565b67ffffffffffffffff8311156136c6576136c6613474565b6136da836136d483546133e5565b8361365e565b6000601f84116001811461372c57600085156136f65750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611531565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561377b578685013582556020948501946001909201910161375b565b50868210156137b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b888110156138f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261384857600080fd5b8a01606063ffffffff61385a83612eaf565b16855261ffff61386b89840161312c565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181126138a457600080fd5b90910187810191903567ffffffffffffffff8111156138c257600080fd5b8036038313156138d157600080fd5b81888701526138e382870182856134fe565b968901969550505091860191506001016137e7565b509098975050505050505050565b6000808585111561391657600080fd5b8386111561392357600080fd5b5050820193919092039150565b60008451613942818460208901612c95565b8201838582376000930192835250909392505050565b6020815260006111e36020830184866134fe565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec18336030181126135d457600080fd5b67ffffffffffffffff811681146116af57600080fd5b63ffffffff6139c489612eaf565b16815260208801356020820152600060408901356139e1816139a0565b67ffffffffffffffff811660408401525087606083015260e06080830152613a0d60e0830187896134fe565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152613a3c8185876134fe565b9a9950505050505050505050565b600060208284031215613a5c57600080fd5b815167ffffffffffffffff80821115613a7457600080fd5b818401915084601f830112613a8857600080fd5b815181811115613a9a57613a9a613474565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613ae057613ae0613474565b81604052828152876020848701011115613af957600080fd5b612223836020830160208801612c95565b600060208284031215613b1c57600080fd5b8135610a8b816139a0565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff831660408201526080606082015260006135676080830184612cb9565b604081526000613b796040830185612cb9565b82810360208401526120d98185612cb9565b600060208284031215613b9d57600080fd5b8151610a8b81612ef1565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152613bde60e0840182612cb9565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613c198282612cb9565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215613c5e57600080fd5b613c666134a3565b9050815181526020820151602082015292915050565b600060408284031215613c8e57600080fd5b610a8b8383613c4c565b600060808284031215613caa57600080fd5b6040516060810181811067ffffffffffffffff82111715613ccd57613ccd613474565b604052825181526020830151613ce2816139a0565b6020820152613cf48460408501613c4c565b60408201529392505050565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015613d405780818660020360031b1b83161692505b505092915050565b80356020831015610967577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015613d405760089490940360031b84901b1690921692915050565b808202811582820484141761096757610967613432565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c82015260008251613e4f81602c850160208701612c95565b91909101602c0195945050505050565b600082613e95577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251613ee3816048850160208701612c95565b9190910160480195945050505050565b600060208284031215613f0557600080fd5b8151610a8b81612d16565b600082516135d4818460208701612c9556fea2646970667358221220fdbfbaff9bcbfb754d1f995b85391a4976b955bab24f1a2aa4ea5b22a101bbd464736f6c63430008160033";
30800
30814
  static readonly abi: readonly [{
30801
30815
  readonly inputs: readonly [{
30802
30816
  readonly internalType: "string";
@@ -31930,7 +31944,7 @@ declare class OFTAdapter__factory extends ContractFactory {
31930
31944
  }): TransactionRequest;
31931
31945
  attach(address: string): OFTAdapter;
31932
31946
  connect(signer: Signer): OFTAdapter__factory;
31933
- static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162003984380380620039848339810160408190526200003491620001fc565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000099919062000246565b828281818181620000aa336200018a565b620000b5816200018a565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b158015620000ff57600080fd5b505af115801562000114573d6000803e3d6000fd5b50505050505050506200012c620001da60201b60201c565b60ff168360ff16101562000153576040516301e9714b60e41b815260040160405180910390fd5b6200016060068462000288565b6200016d90600a620003a7565b60a0525050506001600160a01b0390921660c05250620003b89050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b0381168114620001f757600080fd5b919050565b6000806000606084860312156200021257600080fd5b6200021d84620001df565b92506200022d60208501620001df565b91506200023d60408501620001df565b90509250925092565b6000602082840312156200025957600080fd5b815160ff811681146200026b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620002a457620002a462000272565b92915050565b600181815b80851115620002eb578160001904821115620002cf57620002cf62000272565b80851615620002dd57918102915b93841c9390800290620002af565b509250929050565b6000826200030457506001620002a4565b816200031357506000620002a4565b81600181146200032c5760028114620003375762000357565b6001915050620002a4565b60ff8411156200034b576200034b62000272565b50506001821b620002a4565b5060208310610133831016604e8410600b84101617156200037c575081810a620002a4565b620003888383620002aa565b80600019048211156200039f576200039f62000272565b029392505050565b60006200026b60ff841683620002f3565b60805160a05160c051613541620004436000396000818161065901528181611a7c01528181611c4a0152611ce10152600081816104b501528181611a1901528181611b2c0152611b660152600081816103c90152818161069f015281816110a6015281816113ca015281816116d70152818161181601528181611dd10152611eca01526135416000f3fe6080604052600436106101e35760003560e01c8063857749b011610102578063bd815db011610095578063d424388511610064578063d42438851461060a578063f2fde38b1461062a578063fc0c546a1461064a578063ff7bd03d1461067d57600080fd5b8063bd815db014610595578063c1e36500146105a8578063ca5eb5e1146105d7578063d045a0dc146105f757600080fd5b8063b731ea0a116100d1578063b731ea0a146104fb578063b98bd07014610528578063bb0b6a5314610548578063bc70b3541461057557600080fd5b8063857749b01461045c5780638da5cb5b14610478578063963efcaa146104a35780639689cb05146104e557600080fd5b806349e460171161017a5780635e280f11116101495780635e280f11146103b75780636fc1b31e146103eb578063715018a61461040b5780637d25a05e1461042057600080fd5b806349e460171461032657806352ae2879146103475780635535d4611461035a5780635a0dfe4d1461038757600080fd5b806317442b70116101b657806317442b70146102af5780631f5e1334146102c45780633400288b146102d957806346a40f75146102f957600080fd5b8063111ecdad146101e857806313137d651461023f578063134d4f2514610254578063156a0d0f1461027c575b600080fd5b3480156101f457600080fd5b506004546102159073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025261024d366004612376565b61069d565b005b34801561026057600080fd5b50610269600281565b60405161ffff9091168152602001610236565b34801561028857600080fd5b50600160025b6040805167ffffffffffffffff938416815292909116602083015201610236565b3480156102bb57600080fd5b5060018061028e565b3480156102d057600080fd5b50610269600181565b3480156102e557600080fd5b506102526102f436600461242a565b61079c565b34801561030557600080fd5b50610319610314366004612474565b6107fa565b6040516102369190612535565b61033961033436600461254c565b610870565b60405161023692919061264e565b34801561035357600080fd5b5030610215565b34801561036657600080fd5b5061037a6103753660046126b3565b610980565b6040516102369190612754565b34801561039357600080fd5b506103a76103a236600461242a565b610a25565b6040519015158152602001610236565b3480156103c357600080fd5b506102157f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f757600080fd5b50610252610406366004612767565b610a44565b34801561041757600080fd5b50610252610ac6565b34801561042c57600080fd5b5061044361043b36600461242a565b600092915050565b60405167ffffffffffffffff9091168152602001610236565b34801561046857600080fd5b5060405160068152602001610236565b34801561048457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610215565b3480156104af57600080fd5b506104d77f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610236565b3480156104f157600080fd5b506104d760055481565b34801561050757600080fd5b506002546102159073ffffffffffffffffffffffffffffffffffffffff1681565b34801561053457600080fd5b506102526105433660046127c9565b610ada565b34801561055457600080fd5b506104d76105633660046127ff565b60016020526000908152604090205481565b34801561058157600080fd5b5061037a61059036600461281a565b610c3b565b6102526105a33660046127c9565b610dcf565b3480156105b457600080fd5b506105c86105c336600461287b565b610f86565b604051610236939291906128cf565b3480156105e357600080fd5b506102526105f2366004612767565b611059565b610252610605366004612376565b611105565b34801561061657600080fd5b50610252610625366004612767565b61114d565b34801561063657600080fd5b50610252610645366004612767565b6111c8565b34801561065657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610215565b34801561068957600080fd5b506103a7610698366004612986565b61127f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610713576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061072d90610728908a6127ff565b6112b5565b146107845761073f60208801886127ff565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161070a565b6107938787878787878761130a565b50505050505050565b6107a4611499565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b6040805180820190915260008082526020820152600061082f60408b013560608c013561082a60208e018e6127ff565b61151a565b9150506000806108438c8c8c8b8b88611577565b909250905061086061085860208e018e6127ff565b83838c6116c1565b9c9b505050505050505050505050565b61087861229b565b60408051808201909152600080825260208201526000806108b48d604001358e606001358f60000160208101906108af91906127ff565b6117af565b915091506000806108c98f8f8f8d8d88611577565b915091506108fc8f60000160208101906108e391906127ff565b83838f8036038101906108f691906129fa565b8f6117e3565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e6040516109669493929190612a75565b60405180910390a350505050995099975050505050505050565b6003602090815260009283526040808420909152908252902080546109a490612a9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090612a9f565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b505050505081565b63ffffffff821660009081526001602052604090205481145b92915050565b610a4c611499565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610ace611499565b610ad860006118fb565b565b610ae2611499565b60005b81811015610c0957610b27838383818110610b0257610b02612aec565b9050602002810190610b149190612b1b565b610b22906040810190612b59565b611970565b828282818110610b3957610b39612aec565b9050602002810190610b4b9190612b1b565b610b59906040810190612b59565b60036000868686818110610b6f57610b6f612aec565b9050602002810190610b819190612b1b565b610b8f9060208101906127ff565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610bbd57610bbd612aec565b9050602002810190610bcf9190612b1b565b610be0906040810190602001612bbe565b61ffff168152602081019190915260400160002091610c00919083612c29565b50600101610ae5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67482826040516107ee929190612d43565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610c6f90612a9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b90612a9f565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505090508051600003610d385783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610dc79350505050565b6000839003610d48579050610dc7565b60028310610d9157610d5a8484611970565b80610d688460028188612e81565b604051602001610d7a93929190612eab565b604051602081830303815290604052915050610dc7565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b949350505050565b60005b81811015610ec15736838383818110610ded57610ded612aec565b9050602002810190610dff9190612ee7565b9050610e1b610e1160208301836127ff565b6020830135610a25565b610e255750610eb9565b3063d045a0dc60c08301358360a0810135610e44610100830183612b59565b610e55610100890160e08a01612767565b610e636101208a018a612b59565b6040518963ffffffff1660e01b8152600401610e859796959493929190612f31565b6000604051808303818588803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b5050505050505b600101610dd2565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f539190810190612fc5565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b60408051808201909152600080825260208201526060610fb9604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611015565b604080518082019091526000815260606020820152815260200190600190039081610fed5790505b50935060008061103560408b013560608c013561082a60208e018e6127ff565b604080518082019091529182526020820152969a9599509597509395505050505050565b611061611499565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b5050505050565b33301461113e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079387878787878787610784565b611155611499565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610abb565b6111d0611499565b73ffffffffffffffffffffffffffffffffffffffff8116611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070a565b61127c816118fb565b50565b600060208201803590600190839061129790866127ff565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610a3e576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161070a565b600061131c61131987876119d0565b90565b9050600061133261132d88886119ef565b611a12565b9050600061134d838361134860208e018e6127ff565b611a48565b9050602887111561143a57600061138a61136d60608d0160408e01613085565b61137a60208e018e6127ff565b846113858d8d611aab565b611af6565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114069087908e9060009087906004016130a2565b600060405180830381600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070a565b60008061152685611b28565b91508190508381101561156f576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161070a565b935093915050565b60608060006115c9896020013561158d86611b5f565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8b92505050565b90935090506000816115dc5760016115df565b60025b90506115f96115f160208c018c6127ff565b828b8b610c3b565b60045490935073ffffffffffffffffffffffffffffffffffffffff16156116b457600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb916116719188918891016130e1565b602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b29190613106565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611731896112b5565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611766929190613123565b6040805180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906131f7565b95945050505050565b60008084156117cd576117c3858585611c1d565b909250905061156f565b6117d78484611c93565b90969095509350505050565b6117eb61229b565b60006117fa8460000151611d8c565b602085015190915015611814576118148460200151611dcd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016118718c6112b5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016118ad929190613123565b60806040518083038185885af11580156118cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f09190613213565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061197f6002828486612e81565b6119889161327b565b60f01c9050600381146119cb5782826040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b505050565b60006119df6020828486612e81565b6119e8916132c3565b9392505050565b60006119ff602860208486612e81565b611a08916132ff565b60c01c9392505050565b6000610a3e7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613374565b60008260056000828254611a5c919061338b565b90915550611aa3905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611ef3565b509092915050565b6060611aba8260288186612e81565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611b0f949392919061339e565b6040516020818303038152906040529050949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b55818461341c565b610a3e9190613374565b6000610a3e7f00000000000000000000000000000000000000000000000000000000000000008361341c565b8051606090151580611bec578484604051602001611bd892919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611c13565b84843385604051602001611c039493929190613457565b6040516020818303038152906040525b9150935093915050565b600080611c2b85858561151a565b9092509050611c7273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085611fc7565b8060056000828254611c8491906134b0565b92505081905550935093915050565b6005546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906134c3565b611d56919061338b565b9050611d6381868661151a565b80935081945050508160056000828254611d7d91906134b0565b92505081905550509250929050565b6000813414611dc9576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161070a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e91906134dc565b905073ffffffffffffffffffffffffffffffffffffffff8116611ead576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eef73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611fc7565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119cb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261202b565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526120259085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611f45565b50505050565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661213a9092919063ffffffff16565b90508051600014806120ae5750808060200190518101906120ae9190613106565b6119cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161070a565b6060610dc78484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161216e91906134f9565b60006040518083038185875af1925050503d80600081146121ab576040519150601f19603f3d011682016040523d82523d6000602084013e6121b0565b606091505b50915091506118f0878383876060831561225257825160000361224b5773ffffffffffffffffffffffffffffffffffffffff85163b61224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070a565b5081610dc7565b610dc783838151156122675781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016122de604051806040016040528060008152602001600081525090565b905290565b6000606082840312156122f557600080fd5b50919050565b60008083601f84011261230d57600080fd5b50813567ffffffffffffffff81111561232557600080fd5b60208301915083602082850101111561233d57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461127c57600080fd5b803561237181612344565b919050565b600080600080600080600060e0888a03121561239157600080fd5b61239b89896122e3565b965060608801359550608088013567ffffffffffffffff808211156123bf57600080fd5b6123cb8b838c016122fb565b909750955060a08a013591506123e082612344565b90935060c089013590808211156123f657600080fd5b506124038a828b016122fb565b989b979a50959850939692959293505050565b803563ffffffff8116811461237157600080fd5b6000806040838503121561243d57600080fd5b61244683612416565b946020939093013593505050565b6000608082840312156122f557600080fd5b801515811461127c57600080fd5b600080600080600080600080610100898b03121561249157600080fd5b61249b8a8a612454565b9750608089013567ffffffffffffffff808211156124b857600080fd5b6124c48c838d016122fb565b909950975060a08b013591506124d982612466565b90955060c08a013590808211156124ef57600080fd5b6124fb8c838d016122fb565b909650945060e08b013591508082111561251457600080fd5b506125218b828c016122fb565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610a3e565b6000806000806000806000806000898b0361014081121561256c57600080fd5b6125768c8c612454565b995060808b013567ffffffffffffffff8082111561259357600080fd5b61259f8e838f016122fb565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60840112156125d757600080fd5b60a08d0198506125e960e08e01612366565b97506101008d013592508083111561260057600080fd5b61260c8e848f016122fb565b90975095506101208d013592508691508083111561262957600080fd5b50506126378c828d016122fb565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161268a604084018280518252602090810151910152565b5082516080830152602083015160a08301526119e8565b803561ffff8116811461237157600080fd5b600080604083850312156126c657600080fd5b6126cf83612416565b91506126dd602084016126a1565b90509250929050565b60005b838110156127015781810151838201526020016126e9565b50506000910152565b600081518084526127228160208601602086016126e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119e8602083018461270a565b60006020828403121561277957600080fd5b81356119e881612344565b60008083601f84011261279657600080fd5b50813567ffffffffffffffff8111156127ae57600080fd5b6020830191508360208260051b850101111561233d57600080fd5b600080602083850312156127dc57600080fd5b823567ffffffffffffffff8111156127f357600080fd5b6117d785828601612784565b60006020828403121561281157600080fd5b6119e882612416565b6000806000806060858703121561283057600080fd5b61283985612416565b9350612847602086016126a1565b9250604085013567ffffffffffffffff81111561286357600080fd5b61286f878288016122fb565b95989497509550505050565b600080600060a0848603121561289057600080fd5b61289a8585612454565b9250608084013567ffffffffffffffff8111156128b657600080fd5b6128c2868287016122fb565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015612968578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526129558789018261270a565b975050938201939082019060010161290b565b50508751606088015250505060208501516080850152509050610dc7565b60006060828403121561299857600080fd5b6119e883836122e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156129f4576129f46129a2565b60405290565b600060408284031215612a0c57600080fd5b612a146129d1565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152836020820152606060408201526000612a95606083018486612a2c565b9695505050505050565b600181811c90821680612ab357607f821691505b6020821081036122f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612b4f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8e57600080fd5b83018035915067ffffffffffffffff821115612ba957600080fd5b60200191503681900382131561233d57600080fd5b600060208284031215612bd057600080fd5b6119e8826126a1565b601f8211156119cb576000816000526020600020601f850160051c81016020861015612c025750805b601f850160051c820191505b81811015612c2157828155600101612c0e565b505050505050565b67ffffffffffffffff831115612c4157612c416129a2565b612c5583612c4f8354612a9f565b83612bd9565b6000601f841160018114612ca75760008515612c715750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110fe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612cf65786850135825560209485019460019092019101612cd6565b5086821015612d31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112612dc357600080fd5b8a01606063ffffffff612dd583612416565b16855261ffff612de68984016126a1565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612e1f57600080fd5b90910187810191903567ffffffffffffffff811115612e3d57600080fd5b803603831315612e4c57600080fd5b8188870152612e5e8287018285612a2c565b96890196955050509186019150600101612d62565b509098975050505050505050565b60008085851115612e9157600080fd5b83861115612e9e57600080fd5b5050820193919092039150565b60008451612ebd8184602089016126e6565b8201838582376000930192835250909392505050565b602081526000610dc7602083018486612a2c565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612b4f57600080fd5b67ffffffffffffffff8116811461127c57600080fd5b63ffffffff612f3f89612416565b1681526020880135602082015260006040890135612f5c81612f1b565b67ffffffffffffffff811660408401525087606083015260e06080830152612f8860e083018789612a2c565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612fb7818587612a2c565b9a9950505050505050505050565b600060208284031215612fd757600080fd5b815167ffffffffffffffff80821115612fef57600080fd5b818401915084601f83011261300357600080fd5b815181811115613015576130156129a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561305b5761305b6129a2565b8160405282815287602084870101111561307457600080fd5b6118f08360208301602088016126e6565b60006020828403121561309757600080fd5b81356119e881612f1b565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612a95608083018461270a565b6040815260006130f4604083018561270a565b82810360208401526117a6818561270a565b60006020828403121561311857600080fd5b81516119e881612466565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261315960e084018261270a565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613194828261270a565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156131d957600080fd5b6131e16129d1565b9050815181526020820151602082015292915050565b60006040828403121561320957600080fd5b6119e883836131c7565b60006080828403121561322557600080fd5b6040516060810181811067ffffffffffffffff82111715613248576132486129a2565b60405282518152602083015161325d81612f1b565b602082015261326f84604085016131c7565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156132bb5780818660020360031b1b83161692505b505092915050565b80356020831015610a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132bb5760089490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3e57610a3e613345565b81810381811115610a3e57610a3e613345565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161340c81602c8501602087016126e6565b91909101602c0195945050505050565b600082613452577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516134a08160488501602087016126e6565b9190910160480195945050505050565b80820180821115610a3e57610a3e613345565b6000602082840312156134d557600080fd5b5051919050565b6000602082840312156134ee57600080fd5b81516119e881612344565b60008251612b4f8184602087016126e656fea26469706673582212207f042c1f5ae903a14d740f6c56bb30384fc53a5e277e6cde5ecb50da0bdc51ef64736f6c63430008160033";
31947
+ static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162003984380380620039848339810160408190526200003491620001fc565b826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000099919062000246565b828281818181620000aa336200018a565b620000b5816200018a565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b158015620000ff57600080fd5b505af115801562000114573d6000803e3d6000fd5b50505050505050506200012c620001da60201b60201c565b60ff168360ff16101562000153576040516301e9714b60e41b815260040160405180910390fd5b6200016060068462000288565b6200016d90600a620003a7565b60a0525050506001600160a01b0390921660c05250620003b89050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b0381168114620001f757600080fd5b919050565b6000806000606084860312156200021257600080fd5b6200021d84620001df565b92506200022d60208501620001df565b91506200023d60408501620001df565b90509250925092565b6000602082840312156200025957600080fd5b815160ff811681146200026b57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620002a457620002a462000272565b92915050565b600181815b80851115620002eb578160001904821115620002cf57620002cf62000272565b80851615620002dd57918102915b93841c9390800290620002af565b509250929050565b6000826200030457506001620002a4565b816200031357506000620002a4565b81600181146200032c5760028114620003375762000357565b6001915050620002a4565b60ff8411156200034b576200034b62000272565b50506001821b620002a4565b5060208310610133831016604e8410600b84101617156200037c575081810a620002a4565b620003888383620002aa565b80600019048211156200039f576200039f62000272565b029392505050565b60006200026b60ff841683620002f3565b60805160a05160c051613541620004436000396000818161065901528181611a7c01528181611c4a0152611ce10152600081816104b501528181611a1901528181611b2c0152611b660152600081816103c90152818161069f015281816110a6015281816113ca015281816116d70152818161181601528181611dd10152611eca01526135416000f3fe6080604052600436106101e35760003560e01c8063857749b011610102578063bd815db011610095578063d424388511610064578063d42438851461060a578063f2fde38b1461062a578063fc0c546a1461064a578063ff7bd03d1461067d57600080fd5b8063bd815db014610595578063c1e36500146105a8578063ca5eb5e1146105d7578063d045a0dc146105f757600080fd5b8063b731ea0a116100d1578063b731ea0a146104fb578063b98bd07014610528578063bb0b6a5314610548578063bc70b3541461057557600080fd5b8063857749b01461045c5780638da5cb5b14610478578063963efcaa146104a35780639689cb05146104e557600080fd5b806349e460171161017a5780635e280f11116101495780635e280f11146103b75780636fc1b31e146103eb578063715018a61461040b5780637d25a05e1461042057600080fd5b806349e460171461032657806352ae2879146103475780635535d4611461035a5780635a0dfe4d1461038757600080fd5b806317442b70116101b657806317442b70146102af5780631f5e1334146102c45780633400288b146102d957806346a40f75146102f957600080fd5b8063111ecdad146101e857806313137d651461023f578063134d4f2514610254578063156a0d0f1461027c575b600080fd5b3480156101f457600080fd5b506004546102159073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61025261024d366004612376565b61069d565b005b34801561026057600080fd5b50610269600281565b60405161ffff9091168152602001610236565b34801561028857600080fd5b50600160025b6040805167ffffffffffffffff938416815292909116602083015201610236565b3480156102bb57600080fd5b5060018061028e565b3480156102d057600080fd5b50610269600181565b3480156102e557600080fd5b506102526102f436600461242a565b61079c565b34801561030557600080fd5b50610319610314366004612474565b6107fa565b6040516102369190612535565b61033961033436600461254c565b610870565b60405161023692919061264e565b34801561035357600080fd5b5030610215565b34801561036657600080fd5b5061037a6103753660046126b3565b610980565b6040516102369190612754565b34801561039357600080fd5b506103a76103a236600461242a565b610a25565b6040519015158152602001610236565b3480156103c357600080fd5b506102157f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f757600080fd5b50610252610406366004612767565b610a44565b34801561041757600080fd5b50610252610ac6565b34801561042c57600080fd5b5061044361043b36600461242a565b600092915050565b60405167ffffffffffffffff9091168152602001610236565b34801561046857600080fd5b5060405160068152602001610236565b34801561048457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610215565b3480156104af57600080fd5b506104d77f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610236565b3480156104f157600080fd5b506104d760055481565b34801561050757600080fd5b506002546102159073ffffffffffffffffffffffffffffffffffffffff1681565b34801561053457600080fd5b506102526105433660046127c9565b610ada565b34801561055457600080fd5b506104d76105633660046127ff565b60016020526000908152604090205481565b34801561058157600080fd5b5061037a61059036600461281a565b610c3b565b6102526105a33660046127c9565b610dcf565b3480156105b457600080fd5b506105c86105c336600461287b565b610f86565b604051610236939291906128cf565b3480156105e357600080fd5b506102526105f2366004612767565b611059565b610252610605366004612376565b611105565b34801561061657600080fd5b50610252610625366004612767565b61114d565b34801561063657600080fd5b50610252610645366004612767565b6111c8565b34801561065657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610215565b34801561068957600080fd5b506103a7610698366004612986565b61127f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610713576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6020870180359061072d90610728908a6127ff565b6112b5565b146107845761073f60208801886127ff565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161070a565b6107938787878787878761130a565b50505050505050565b6107a4611499565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a15050565b6040805180820190915260008082526020820152600061082f60408b013560608c013561082a60208e018e6127ff565b61151a565b9150506000806108438c8c8c8b8b88611577565b909250905061086061085860208e018e6127ff565b83838c6116c1565b9c9b505050505050505050505050565b61087861229b565b60408051808201909152600080825260208201526000806108b48d604001358e606001358f60000160208101906108af91906127ff565b6117af565b915091506000806108c98f8f8f8d8d88611577565b915091506108fc8f60000160208101906108e391906127ff565b83838f8036038101906108f691906129fa565b8f6117e3565b955060405180604001604052808581526020018481525094503373ffffffffffffffffffffffffffffffffffffffff1686600001517fee6b77e8cd280835aecc97812d736c35faad222d91b12de19c7ed912e9aed71b86868e8e6040516109669493929190612a75565b60405180910390a350505050995099975050505050505050565b6003602090815260009283526040808420909152908252902080546109a490612a9f565b80601f01602080910402602001604051908101604052809291908181526020018280546109d090612a9f565b8015610a1d5780601f106109f257610100808354040283529160200191610a1d565b820191906000526020600020905b815481529060010190602001808311610a0057829003601f168201915b505050505081565b63ffffffff821660009081526001602052604090205481145b92915050565b610a4c611499565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610ace611499565b610ad860006118fb565b565b610ae2611499565b60005b81811015610c0957610b27838383818110610b0257610b02612aec565b9050602002810190610b149190612b1b565b610b22906040810190612b59565b611970565b828282818110610b3957610b39612aec565b9050602002810190610b4b9190612b1b565b610b59906040810190612b59565b60036000868686818110610b6f57610b6f612aec565b9050602002810190610b819190612b1b565b610b8f9060208101906127ff565b63ffffffff1663ffffffff1681526020019081526020016000206000868686818110610bbd57610bbd612aec565b9050602002810190610bcf9190612b1b565b610be0906040810190602001612bbe565b61ffff168152602081019190915260400160002091610c00919083612c29565b50600101610ae5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67482826040516107ee929190612d43565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610c6f90612a9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9b90612a9f565b8015610ce85780601f10610cbd57610100808354040283529160200191610ce8565b820191906000526020600020905b815481529060010190602001808311610ccb57829003601f168201915b505050505090508051600003610d385783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610dc79350505050565b6000839003610d48579050610dc7565b60028310610d9157610d5a8484611970565b80610d688460028188612e81565b604051602001610d7a93929190612eab565b604051602081830303815290604052915050610dc7565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b949350505050565b60005b81811015610ec15736838383818110610ded57610ded612aec565b9050602002810190610dff9190612ee7565b9050610e1b610e1160208301836127ff565b6020830135610a25565b610e255750610eb9565b3063d045a0dc60c08301358360a0810135610e44610100830183612b59565b610e55610100890160e08a01612767565b610e636101208a018a612b59565b6040518963ffffffff1660e01b8152600401610e859796959493929190612f31565b6000604051808303818588803b158015610e9e57600080fd5b505af1158015610eb2573d6000803e3d6000fd5b5050505050505b600101610dd2565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f0d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f539190810190612fc5565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b60408051808201909152600080825260208201526060610fb9604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff602080840182905284518381529081019094529195509182611015565b604080518082019091526000815260606020820152815260200190600190039081610fed5790505b50935060008061103560408b013560608c013561082a60208e018e6127ff565b604080518082019091529182526020820152969a9599509597509395505050505050565b611061611499565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b1580156110ea57600080fd5b505af11580156110fe573d6000803e3d6000fd5b5050505050565b33301461113e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61079387878787878787610784565b611155611499565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610abb565b6111d0611499565b73ffffffffffffffffffffffffffffffffffffffff8116611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070a565b61127c816118fb565b50565b600060208201803590600190839061129790866127ff565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff811660009081526001602052604081205480610a3e576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161070a565b600061131c61131987876119d0565b90565b9050600061133261132d88886119ef565b611a12565b9050600061134d838361134860208e018e6127ff565b611a48565b9050602887111561143a57600061138a61136d60608d0160408e01613085565b61137a60208e018e6127ff565b846113858d8d611aab565b611af6565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114069087908e9060009087906004016130a2565b600060405180830381600087803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050505b604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8516918b917f80a66cf84dc0b742c17c4672ee6687d7cb340ab0e5d367ac6b02bed1a6489f8d910160405180910390a350505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070a565b60008061152685611b28565b91508190508381101561156f576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161070a565b935093915050565b60608060006115c9896020013561158d86611b5f565b88888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b8b92505050565b90935090506000816115dc5760016115df565b60025b90506115f96115f160208c018c6127ff565b828b8b610c3b565b60045490935073ffffffffffffffffffffffffffffffffffffffff16156116b457600480546040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169163043a78eb916116719188918891016130e1565b602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b29190613106565b505b5050965096945050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611731896112b5565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611766929190613123565b6040805180830381865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906131f7565b95945050505050565b60008084156117cd576117c3858585611c1d565b909250905061156f565b6117d78484611c93565b90969095509350505050565b6117eb61229b565b60006117fa8460000151611d8c565b602085015190915015611814576118148460200151611dcd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff1681526020016118718c6112b5565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016118ad929190613123565b60806040518083038185885af11580156118cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118f09190613213565b979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061197f6002828486612e81565b6119889161327b565b60f01c9050600381146119cb5782826040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161070a929190612ed3565b505050565b60006119df6020828486612e81565b6119e8916132c3565b9392505050565b60006119ff602860208486612e81565b611a08916132ff565b60c01c9392505050565b6000610a3e7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613374565b60008260056000828254611a5c919061338b565b90915550611aa3905073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611ef3565b509092915050565b6060611aba8260288186612e81565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611b0f949392919061339e565b6040516020818303038152906040529050949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b55818461341c565b610a3e9190613374565b6000610a3e7f00000000000000000000000000000000000000000000000000000000000000008361341c565b8051606090151580611bec578484604051602001611bd892919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611c13565b84843385604051602001611c039493929190613457565b6040516020818303038152906040525b9150935093915050565b600080611c2b85858561151a565b9092509050611c7273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333085611fc7565b8060056000828254611c8491906134b0565b92505081905550935093915050565b6005546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906134c3565b611d56919061338b565b9050611d6381868661151a565b80935081945050508160056000828254611d7d91906134b0565b92505081905550509250929050565b6000813414611dc9576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161070a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5e91906134dc565b905073ffffffffffffffffffffffffffffffffffffffff8116611ead576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eef73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611fc7565b5050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119cb9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261202b565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526120259085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611f45565b50505050565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661213a9092919063ffffffff16565b90508051600014806120ae5750808060200190518101906120ae9190613106565b6119cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161070a565b6060610dc78484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161216e91906134f9565b60006040518083038185875af1925050503d80600081146121ab576040519150601f19603f3d011682016040523d82523d6000602084013e6121b0565b606091505b50915091506118f0878383876060831561225257825160000361224b5773ffffffffffffffffffffffffffffffffffffffff85163b61224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070a565b5081610dc7565b610dc783838151156122675781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070a9190612754565b604051806060016040528060008019168152602001600067ffffffffffffffff1681526020016122de604051806040016040528060008152602001600081525090565b905290565b6000606082840312156122f557600080fd5b50919050565b60008083601f84011261230d57600080fd5b50813567ffffffffffffffff81111561232557600080fd5b60208301915083602082850101111561233d57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461127c57600080fd5b803561237181612344565b919050565b600080600080600080600060e0888a03121561239157600080fd5b61239b89896122e3565b965060608801359550608088013567ffffffffffffffff808211156123bf57600080fd5b6123cb8b838c016122fb565b909750955060a08a013591506123e082612344565b90935060c089013590808211156123f657600080fd5b506124038a828b016122fb565b989b979a50959850939692959293505050565b803563ffffffff8116811461237157600080fd5b6000806040838503121561243d57600080fd5b61244683612416565b946020939093013593505050565b6000608082840312156122f557600080fd5b801515811461127c57600080fd5b600080600080600080600080610100898b03121561249157600080fd5b61249b8a8a612454565b9750608089013567ffffffffffffffff808211156124b857600080fd5b6124c48c838d016122fb565b909950975060a08b013591506124d982612466565b90955060c08a013590808211156124ef57600080fd5b6124fb8c838d016122fb565b909650945060e08b013591508082111561251457600080fd5b506125218b828c016122fb565b999c989b5096995094979396929594505050565b815181526020808301519082015260408101610a3e565b6000806000806000806000806000898b0361014081121561256c57600080fd5b6125768c8c612454565b995060808b013567ffffffffffffffff8082111561259357600080fd5b61259f8e838f016122fb565b909b50995089915060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60840112156125d757600080fd5b60a08d0198506125e960e08e01612366565b97506101008d013592508083111561260057600080fd5b61260c8e848f016122fb565b90975095506101208d013592508691508083111561262957600080fd5b50506126378c828d016122fb565b915080935050809150509295985092959850929598565b600060c0820190508351825267ffffffffffffffff6020850151166020830152604084015161268a604084018280518252602090810151910152565b5082516080830152602083015160a08301526119e8565b803561ffff8116811461237157600080fd5b600080604083850312156126c657600080fd5b6126cf83612416565b91506126dd602084016126a1565b90509250929050565b60005b838110156127015781810151838201526020016126e9565b50506000910152565b600081518084526127228160208601602086016126e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006119e8602083018461270a565b60006020828403121561277957600080fd5b81356119e881612344565b60008083601f84011261279657600080fd5b50813567ffffffffffffffff8111156127ae57600080fd5b6020830191508360208260051b850101111561233d57600080fd5b600080602083850312156127dc57600080fd5b823567ffffffffffffffff8111156127f357600080fd5b6117d785828601612784565b60006020828403121561281157600080fd5b6119e882612416565b6000806000806060858703121561283057600080fd5b61283985612416565b9350612847602086016126a1565b9250604085013567ffffffffffffffff81111561286357600080fd5b61286f878288016122fb565b95989497509550505050565b600080600060a0848603121561289057600080fd5b61289a8585612454565b9250608084013567ffffffffffffffff8111156128b657600080fd5b6128c2868287016122fb565b9497909650939450505050565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b83811015612968578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400185528151805188528301518388018790526129558789018261270a565b975050938201939082019060010161290b565b50508751606088015250505060208501516080850152509050610dc7565b60006060828403121561299857600080fd5b6119e883836122e3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156129f4576129f46129a2565b60405290565b600060408284031215612a0c57600080fd5b612a146129d1565b82358152602083013560208201528091505092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152836020820152606060408201526000612a95606083018486612a2c565b9695505050505050565b600181811c90821680612ab357607f821691505b6020821081036122f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612b4f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8e57600080fd5b83018035915067ffffffffffffffff821115612ba957600080fd5b60200191503681900382131561233d57600080fd5b600060208284031215612bd057600080fd5b6119e8826126a1565b601f8211156119cb576000816000526020600020601f850160051c81016020861015612c025750805b601f850160051c820191505b81811015612c2157828155600101612c0e565b505050505050565b67ffffffffffffffff831115612c4157612c416129a2565b612c5583612c4f8354612a9f565b83612bd9565b6000601f841160018114612ca75760008515612c715750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556110fe565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612cf65786850135825560209485019460019092019101612cd6565b5086821015612d31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612e73577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b3603018112612dc357600080fd5b8a01606063ffffffff612dd583612416565b16855261ffff612de68984016126a1565b1688860152868201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1833603018112612e1f57600080fd5b90910187810191903567ffffffffffffffff811115612e3d57600080fd5b803603831315612e4c57600080fd5b8188870152612e5e8287018285612a2c565b96890196955050509186019150600101612d62565b509098975050505050505050565b60008085851115612e9157600080fd5b83861115612e9e57600080fd5b5050820193919092039150565b60008451612ebd8184602089016126e6565b8201838582376000930192835250909392505050565b602081526000610dc7602083018486612a2c565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612b4f57600080fd5b67ffffffffffffffff8116811461127c57600080fd5b63ffffffff612f3f89612416565b1681526020880135602082015260006040890135612f5c81612f1b565b67ffffffffffffffff811660408401525087606083015260e06080830152612f8860e083018789612a2c565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612fb7818587612a2c565b9a9950505050505050505050565b600060208284031215612fd757600080fd5b815167ffffffffffffffff80821115612fef57600080fd5b818401915084601f83011261300357600080fd5b815181811115613015576130156129a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561305b5761305b6129a2565b8160405282815287602084870101111561307457600080fd5b6118f08360208301602088016126e6565b60006020828403121561309757600080fd5b81356119e881612f1b565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612a95608083018461270a565b6040815260006130f4604083018561270a565b82810360208401526117a6818561270a565b60006020828403121561311857600080fd5b81516119e881612466565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261315960e084018261270a565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152613194828261270a565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b6000604082840312156131d957600080fd5b6131e16129d1565b9050815181526020820151602082015292915050565b60006040828403121561320957600080fd5b6119e883836131c7565b60006080828403121561322557600080fd5b6040516060810181811067ffffffffffffffff82111715613248576132486129a2565b60405282518152602083015161325d81612f1b565b602082015261326f84604085016131c7565b60408201529392505050565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156132bb5780818660020360031b1b83161692505b505092915050565b80356020831015610a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132bb5760089490940360031b84901b1690921692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3e57610a3e613345565b81810381811115610a3e57610a3e613345565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c8201526000825161340c81602c8501602087016126e6565b91909101602c0195945050505050565b600082613452577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b166020820152826028820152600082516134a08160488501602087016126e6565b9190910160480195945050505050565b80820180821115610a3e57610a3e613345565b6000602082840312156134d557600080fd5b5051919050565b6000602082840312156134ee57600080fd5b81516119e881612344565b60008251612b4f8184602087016126e656fea26469706673582212206563933a7a6cf478129b0ba4bd02e8aa998caa87f102b59b3d91527bbbbe7e3064736f6c63430008160033";
31934
31948
  static readonly abi: readonly [{
31935
31949
  readonly inputs: readonly [{
31936
31950
  readonly internalType: "address";
@@ -34811,7 +34825,7 @@ declare class CCIPDVNAdapter__factory extends ContractFactory {
34811
34825
  }): TransactionRequest;
34812
34826
  attach(address: string): CCIPDVNAdapter;
34813
34827
  connect(signer: Signer): CCIPDVNAdapter__factory;
34814
- static readonly bytecode = "0x60e06040526001805461ffff60a01b191661027160a41b1790553480156200002657600080fd5b506040516200361338038062003613833981016040819052620000499162000349565b838383836001600160a01b0381166200007c576040516335fdcccd60e21b81526000600482015260240160405180910390fd5b6001600160a01b03166080526200009333620002c6565b6000806000856001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd919062000468565b9250925092506000806000876001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000147573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016d919062000468565b925092509250826001600160401b0316866001600160401b03161415806200019b57508160ff168560ff1614155b80620001ad57508060ff168460ff1614155b15620001cc5760405163714f551360e01b815260040160405180910390fd5b6001600160a01b03808a1660a052881660c05260005b8751811015620002b2576001600260008a8481518110620002075762000207620004bf565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508781815181106200025b576200025b620004bf565b60200260200101516001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e96001604051620002a1911515815260200190565b60405180910390a2600101620001e2565b5050505050505050505050505050620004d5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200032e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200036057600080fd5b6200036b8562000316565b935060206200037c81870162000316565b60408701519094506001600160401b03808211156200039a57600080fd5b818801915088601f830112620003af57600080fd5b815181811115620003c457620003c462000333565b8060051b604051601f19603f83011681018181108582111715620003ec57620003ec62000333565b60405291825284820192508381018501918b8311156200040b57600080fd5b938501935b828510156200043457620004248562000316565b8452938501939285019262000410565b8097505050505050506200044b6060860162000316565b905092959194509250565b805160ff811681146200032e57600080fd5b6000806000606084860312156200047e57600080fd5b83516001600160401b03811681146200049657600080fd5b9250620004a66020850162000456565b9150620004b66040850162000456565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c0516130e46200052f600039600081816104690152611c040152600081816103d501528181610ba3015261186701526000818161040601528181610b1701528181610db0015261167001526130e46000f3fe6080604052600436106101785760003560e01c806395d376d7116100cb578063bb37d00c1161007f578063f2fde38b11610059578063f2fde38b146104ab578063f5ec0d28146104cb578063fd9be5221461051357600080fd5b8063bb37d00c1461042a578063bd3ed5ff14610457578063ed9460241461048b57600080fd5b80639ec84c0a116100b05780639ec84c0a146103a3578063a0706d90146103c3578063b0f479a1146103f757600080fd5b806395d376d7146103605780639e9449651461037357600080fd5b8063429b62e51161012d57806381d981af1161010757806381d981af146102d457806385572ffb146102f45780638da5cb5b1461031457600080fd5b8063429b62e51461026f5780634b0bddd21461029f578063715018a6146102bf57600080fd5b806301ffc9a71161015e57806301ffc9a7146101f157806320ac2ece1461022157806330bb3aac1461024157600080fd5b8062bf2e801461018457806301e33667146101cf57600080fd5b3661017f57005b600080fd5b34801561019057600080fd5b506001546101b79074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101db57600080fd5b506101ef6101ea3660046122c2565b610533565b005b3480156101fd57600080fd5b5061021161020c3660046122fe565b6105df565b60405190151581526020016101c6565b34801561022d57600080fd5b506101ef61023c366004612340565b610678565b34801561024d57600080fd5b5061026161025c3660046123d0565b610730565b6040519081526020016101c6565b34801561027b57600080fd5b5061021161028a366004612340565b60026020526000908152604090205460ff1681565b3480156102ab57600080fd5b506101ef6102ba366004612454565b61092a565b3480156102cb57600080fd5b506101ef6109bd565b3480156102e057600080fd5b506101ef6102ef36600461248b565b6109d1565b34801561030057600080fd5b506101ef61030f366004612518565b610aff565b34801561032057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c6565b61026161036e36600461254d565b610b89565b34801561037f57600080fd5b5061039361038e3660046125b6565b610f62565b6040516101c6949392919061263f565b3480156103af57600080fd5b506101ef6103be36600461267c565b611029565b3480156103cf57600080fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061033b565b34801561043657600080fd5b5060015461033b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561046357600080fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049757600080fd5b506101ef6104a63660046126f1565b6112de565b3480156104b757600080fd5b506101ef6104c6366004612340565b6113a8565b3480156104d757600080fd5b506104fe6104e636600461270c565b60046020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101c6565b34801561051f57600080fd5b506101ef61052e366004612727565b61145c565b3360009081526002602052604090205460ff1661057c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105878383836114b3565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f85572ffb00000000000000000000000000000000000000000000000000000000148061067257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b3360009081526002602052604090205460ff166106c1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff8516600090815260036020526040808220815160518082526080820190935290918391610803916020820181803683375050506002840180546000919061077b90612780565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790612780565b80156107f45780601f106107c9576101008083540402835291602001916107f4565b820191906000526020600020905b8154815290600101906020018083116107d757829003601f168201915b505050505085600101546114e8565b825490915061081c9067ffffffffffffffff1682611630565b60015490935073ffffffffffffffffffffffffffffffffffffffff161561091f5760015482546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8b16600482015273ffffffffffffffffffffffffffffffffffffffff898116602483015261ffff740100000000000000000000000000000000000000008504811660448401526801000000000000000090930490921660648201526084810186905291169063212cf54f9060a401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c91906127cd565b92505b505095945050505050565b6109326116ef565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b6109c56116ef565b6109cf6000611770565b565b3360009081526002602052604090205460ff16610a1a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610ac15736838383818110610a3857610a386127e6565b9050604002019050806020016020810190610a5391906126f1565b60036000610a6460208501856125b6565b63ffffffff1681526020810191909152604001600020805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550600101610a1d565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c060558282604051610af3929190612815565b60405180910390a15050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b75576040517fd7f733340000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610b86610b8182612a48565b6117e5565b50565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610bfa576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600381610c0c60208801886125b6565b63ffffffff16815260208082019290925260409081016000208151608081018352815467ffffffffffffffff8116825268010000000000000000900461ffff1693810193909352600181015491830191909152600281018054606084019190610c7490612780565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca090612780565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b50505050508152505090506000610d56868060200190610d0d9190612af5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506060850151604086810151908b013592506114e8565b9050610d66826000015182611630565b9250610d7183611804565b81516040517f96f4e9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916396f4e9f9918691610de7918690600401612b5a565b60206040518083038185885af1158015610e05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e2a91906127cd565b5060015473ffffffffffffffffffffffffffffffffffffffff1615610f595760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f610e7460208901896125b6565b610e8460a08a0160808b01612340565b600154602087015160405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810186905260a401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906127cd565b92505b50509392505050565b60036020526000908152604090208054600182015460028301805467ffffffffffffffff8416946801000000000000000090940461ffff16939190610fa690612780565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd290612780565b801561101f5780601f10610ff45761010080835404028352916020019161101f565b820191906000526020600020905b81548152906001019060200180831161100257829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611072576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156112ac5736838383818110611090576110906127e6565b90506020028101906110a29190612c6f565b9050600460006003816110b860208601866125b6565b63ffffffff168152602080820192909252604090810160009081205467ffffffffffffffff168452838301949094529190910190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055611120908201826125b6565b60046000611134604085016020860161270c565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055506040518060800160405280826020016020810190611192919061270c565b67ffffffffffffffff1681526020016111b160608401604085016126f1565b61ffff168152606083013560208201526040016111d16080840184612af5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525060039250611219905060208501856125b6565b63ffffffff1681526020808201929092526040908101600020835181549385015161ffff1668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941667ffffffffffffffff9091161792909217825582015160018201556060820151600282019061129c9082612cfd565b5050600190920191506110759050565b507f5c257885b187e43434c98dff62b27d2799de2d31908ae78c56d824a8ec2bdb528282604051610af3929190612e60565b3360009081526002602052604090205460ff16611327576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6113b06116ef565b73ffffffffffffffffffffffffffffffffffffffff8116611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b6c565b610b8681611770565b3360009081526002602052604090205460ff166114a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114af828261181b565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166114dd576114d8828261190b565b505050565b6114d8838383611a11565b6115306040518060a00160405280606081526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a0016040528084815260200161154b8787611a7f565b8152602001600060405190808252806020026020018201604052801561159757816020015b60408051808201909152600080825260208201528152602001906001900390816115705790505b50815260006020808301829052604080518082018252878152820192835280516024810188905292511515604480850191909152815180850390910181526064909301815290820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a657c9000000000000000000000000000000000000000000000000000000001790529091015295945050505050565b6040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded906116a79086908690600401612b5a565b602060405180830381865afa1580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e891906127cd565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b6c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f781602001518260400151611aab565b610b868160600151611bb6565b47818110156114af576114af3061181b8385612ff1565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b1580156118ab57600080fd5b505af11580156118bf573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f826040516109b191815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611958576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119b2576040519150601f19603f3d011682016040523d82523d6000602084013e6119b7565b606091505b50509050806114d8576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610b6c565b73ffffffffffffffffffffffffffffffffffffffff8216611a5e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d873ffffffffffffffffffffffffffffffffffffffff84168383611c7c565b60608282604051602001611a94929190613004565b604051602081830303815290604052905092915050565b67ffffffffffffffff821660009081526004602090815260408083205463ffffffff16808452600390925282206002018054919291611ae990612780565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1590612780565b8015611b625780601f10611b3757610100808354040283529160200191611b62565b820191906000526020600020905b815481529060010190602001808311611b4557829003601f168201915b505050505090508080519060200120838051906020012014611bb0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600080611bc283611d09565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611c45908590859067ffffffffffffffff90600401613026565b600060405180830381600087803b158015611c5f57600080fd5b505af1158015611c73573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526114d8908490611d81565b60606000611d1960206051613059565b835114611d52576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d6084826051611e90565b9250611d6d605182613059565b9050611d79848261200a565b915050915091565b6000611de3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208a9092919063ffffffff16565b9050805160001480611e04575080806020019051810190611e04919061306c565b6114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b6c565b606081611e9e81601f613059565b1015611f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610b6c565b611f108284613059565b84511015611f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610b6c565b606082158015611f995760405191506000825260208201604052612001565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fd2578051835260209283019201611fba565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612017826020613059565b83511015612081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610b6c565b50016020015190565b606061209984846000856120a1565b949350505050565b606082471015612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b6c565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161215c9190613089565b60006040518083038185875af1925050503d8060008114612199576040519150601f19603f3d011682016040523d82523d6000602084013e61219e565b606091505b50915091506121af878383876121ba565b979650505050505050565b606083156122505782516000036122495773ffffffffffffffffffffffffffffffffffffffff85163b612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b6c565b5081612099565b61209983838151156122655781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c919061309b565b803573ffffffffffffffffffffffffffffffffffffffff811681146122bd57600080fd5b919050565b6000806000606084860312156122d757600080fd5b6122e084612299565b92506122ee60208501612299565b9150604084013590509250925092565b60006020828403121561231057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146116e857600080fd5b60006020828403121561235257600080fd5b6116e882612299565b803563ffffffff811681146122bd57600080fd5b803567ffffffffffffffff811681146122bd57600080fd5b60008083601f84011261239957600080fd5b50813567ffffffffffffffff8111156123b157600080fd5b6020830191508360208285010111156123c957600080fd5b9250929050565b6000806000806000608086880312156123e857600080fd5b6123f18661235b565b94506123ff6020870161236f565b935061240d60408701612299565b9250606086013567ffffffffffffffff81111561242957600080fd5b61243588828901612387565b969995985093965092949392505050565b8015158114610b8657600080fd5b6000806040838503121561246757600080fd5b61247083612299565b9150602083013561248081612446565b809150509250929050565b6000806020838503121561249e57600080fd5b823567ffffffffffffffff808211156124b657600080fd5b818501915085601f8301126124ca57600080fd5b8135818111156124d957600080fd5b8660208260061b85010111156124ee57600080fd5b60209290920196919550909350505050565b600060a0828403121561251257600080fd5b50919050565b60006020828403121561252a57600080fd5b813567ffffffffffffffff81111561254157600080fd5b61209984828501612500565b60008060006040848603121561256257600080fd5b833567ffffffffffffffff8082111561257a57600080fd5b61258687838801612500565b9450602086013591508082111561259c57600080fd5b506125a986828701612387565b9497909650939450505050565b6000602082840312156125c857600080fd5b6116e88261235b565b60005b838110156125ec5781810151838201526020016125d4565b50506000910152565b6000815180845261260d8160208601602086016125d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b67ffffffffffffffff8516815261ffff8416602082015282604082015260806060820152600061267260808301846125f5565b9695505050505050565b6000806020838503121561268f57600080fd5b823567ffffffffffffffff808211156126a757600080fd5b818501915085601f8301126126bb57600080fd5b8135818111156126ca57600080fd5b8660208260051b85010111156124ee57600080fd5b803561ffff811681146122bd57600080fd5b60006020828403121561270357600080fd5b6116e8826126df565b60006020828403121561271e57600080fd5b6116e88261236f565b6000806040838503121561273a57600080fd5b61274383612299565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061279457607f821691505b602082108103612512577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156127df57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b878110156128675763ffffffff6128418361235b565b16835261ffff6128528684016126df565b1683860152918301919083019060010161282b565b5090979650505050505050565b6040805190810167ffffffffffffffff8111828210171561289757612897612751565b60405290565b60405160a0810167ffffffffffffffff8111828210171561289757612897612751565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561290757612907612751565b604052919050565b600082601f83011261292057600080fd5b813567ffffffffffffffff81111561293a5761293a612751565b61296b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128c0565b81815284602083860101111561298057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126129ae57600080fd5b8135602067ffffffffffffffff8211156129ca576129ca612751565b6129d8818360051b016128c0565b82815260069290921b840181019181810190868411156129f757600080fd5b8286015b84811015612a3d5760408189031215612a145760008081fd5b612a1c612874565b612a2582612299565b815281850135858201528352918301916040016129fb565b509695505050505050565b600060a08236031215612a5a57600080fd5b612a6261289d565b82358152612a726020840161236f565b6020820152604083013567ffffffffffffffff80821115612a9257600080fd5b612a9e3683870161290f565b60408401526060850135915080821115612ab757600080fd5b612ac33683870161290f565b60608401526080850135915080821115612adc57600080fd5b50612ae93682860161299d565b60808301525092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b2a57600080fd5b83018035915067ffffffffffffffff821115612b4557600080fd5b6020019150368190038213156123c957600080fd5b6000604067ffffffffffffffff851683526020604081850152845160a06040860152612b8960e08601826125f5565b9050818601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080878403016060880152612bc483836125f5565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015612c25578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001939093019290860190612be6565b50606089015173ffffffffffffffffffffffffffffffffffffffff1660a08901526080890151888203830160c08a01529550612c6181876125f5565b9a9950505050505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612ca357600080fd5b9190910192915050565b601f8211156114d8576000816000526020600020601f850160051c81016020861015612cd65750805b601f850160051c820191505b81811015612cf557828155600101612ce2565b505050505050565b815167ffffffffffffffff811115612d1757612d17612751565b612d2b81612d258454612780565b84612cad565b602080601f831160018114612d7e5760008415612d485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612cf5565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dcb57888601518255948401946001909101908401612dac565b5085821015612e0757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618b3603018112612ee057600080fd5b8a0160a063ffffffff612ef28361235b565b168552612f0088830161236f565b67ffffffffffffffff8082168a88015261ffff612f1e8a86016126df565b16878a0152606084810135908801526080915081840135368590037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112612f6657600080fd5b90930189810193903581811115612f7c57600080fd5b803603851315612f8b57600080fd5b8383890152612f9d8489018287612e17565b988b01989750505093880193505050600101612e7f565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561067257610672612fc2565b600083516130168184602088016125d1565b9190910191825250602001919050565b60608152600061303960608301866125f5565b905083602083015267ffffffffffffffff83166040830152949350505050565b8082018082111561067257610672612fc2565b60006020828403121561307e57600080fd5b81516116e881612446565b60008251612ca38184602087016125d1565b6020815260006116e860208301846125f556fea264697066735822122067e655ae235f6e2f3db2dfbe3862323220dfe6e8b309212bf1e558d9f8dd358264736f6c63430008160033";
34828
+ static readonly bytecode = "0x60e06040526001805461ffff60a01b191661027160a41b1790553480156200002657600080fd5b506040516200361338038062003613833981016040819052620000499162000349565b838383836001600160a01b0381166200007c576040516335fdcccd60e21b81526000600482015260240160405180910390fd5b6001600160a01b03166080526200009333620002c6565b6000806000856001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620000d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fd919062000468565b9250925092506000806000876001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000147573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016d919062000468565b925092509250826001600160401b0316866001600160401b03161415806200019b57508160ff168560ff1614155b80620001ad57508060ff168460ff1614155b15620001cc5760405163714f551360e01b815260040160405180910390fd5b6001600160a01b03808a1660a052881660c05260005b8751811015620002b2576001600260008a8481518110620002075762000207620004bf565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508781815181106200025b576200025b620004bf565b60200260200101516001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e96001604051620002a1911515815260200190565b60405180910390a2600101620001e2565b5050505050505050505050505050620004d5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200032e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200036057600080fd5b6200036b8562000316565b935060206200037c81870162000316565b60408701519094506001600160401b03808211156200039a57600080fd5b818801915088601f830112620003af57600080fd5b815181811115620003c457620003c462000333565b8060051b604051601f19603f83011681018181108582111715620003ec57620003ec62000333565b60405291825284820192508381018501918b8311156200040b57600080fd5b938501935b828510156200043457620004248562000316565b8452938501939285019262000410565b8097505050505050506200044b6060860162000316565b905092959194509250565b805160ff811681146200032e57600080fd5b6000806000606084860312156200047e57600080fd5b83516001600160401b03811681146200049657600080fd5b9250620004a66020850162000456565b9150620004b66040850162000456565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c0516130e46200052f600039600081816104690152611c040152600081816103d501528181610ba3015261186701526000818161040601528181610b1701528181610db0015261167001526130e46000f3fe6080604052600436106101785760003560e01c806395d376d7116100cb578063bb37d00c1161007f578063f2fde38b11610059578063f2fde38b146104ab578063f5ec0d28146104cb578063fd9be5221461051357600080fd5b8063bb37d00c1461042a578063bd3ed5ff14610457578063ed9460241461048b57600080fd5b80639ec84c0a116100b05780639ec84c0a146103a3578063a0706d90146103c3578063b0f479a1146103f757600080fd5b806395d376d7146103605780639e9449651461037357600080fd5b8063429b62e51161012d57806381d981af1161010757806381d981af146102d457806385572ffb146102f45780638da5cb5b1461031457600080fd5b8063429b62e51461026f5780634b0bddd21461029f578063715018a6146102bf57600080fd5b806301ffc9a71161015e57806301ffc9a7146101f157806320ac2ece1461022157806330bb3aac1461024157600080fd5b8062bf2e801461018457806301e33667146101cf57600080fd5b3661017f57005b600080fd5b34801561019057600080fd5b506001546101b79074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101db57600080fd5b506101ef6101ea3660046122c2565b610533565b005b3480156101fd57600080fd5b5061021161020c3660046122fe565b6105df565b60405190151581526020016101c6565b34801561022d57600080fd5b506101ef61023c366004612340565b610678565b34801561024d57600080fd5b5061026161025c3660046123d0565b610730565b6040519081526020016101c6565b34801561027b57600080fd5b5061021161028a366004612340565b60026020526000908152604090205460ff1681565b3480156102ab57600080fd5b506101ef6102ba366004612454565b61092a565b3480156102cb57600080fd5b506101ef6109bd565b3480156102e057600080fd5b506101ef6102ef36600461248b565b6109d1565b34801561030057600080fd5b506101ef61030f366004612518565b610aff565b34801561032057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c6565b61026161036e36600461254d565b610b89565b34801561037f57600080fd5b5061039361038e3660046125b6565b610f62565b6040516101c6949392919061263f565b3480156103af57600080fd5b506101ef6103be36600461267c565b611029565b3480156103cf57600080fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561040357600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061033b565b34801561043657600080fd5b5060015461033b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561046357600080fd5b5061033b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049757600080fd5b506101ef6104a63660046126f1565b6112de565b3480156104b757600080fd5b506101ef6104c6366004612340565b6113a8565b3480156104d757600080fd5b506104fe6104e636600461270c565b60046020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101c6565b34801561051f57600080fd5b506101ef61052e366004612727565b61145c565b3360009081526002602052604090205460ff1661057c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105878383836114b3565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f85572ffb00000000000000000000000000000000000000000000000000000000148061067257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b3360009081526002602052604090205460ff166106c1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff8516600090815260036020526040808220815160518082526080820190935290918391610803916020820181803683375050506002840180546000919061077b90612780565b80601f01602080910402602001604051908101604052809291908181526020018280546107a790612780565b80156107f45780601f106107c9576101008083540402835291602001916107f4565b820191906000526020600020905b8154815290600101906020018083116107d757829003601f168201915b505050505085600101546114e8565b825490915061081c9067ffffffffffffffff1682611630565b60015490935073ffffffffffffffffffffffffffffffffffffffff161561091f5760015482546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8b16600482015273ffffffffffffffffffffffffffffffffffffffff898116602483015261ffff740100000000000000000000000000000000000000008504811660448401526801000000000000000090930490921660648201526084810186905291169063212cf54f9060a401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c91906127cd565b92505b505095945050505050565b6109326116ef565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b6109c56116ef565b6109cf6000611770565b565b3360009081526002602052604090205460ff16610a1a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610ac15736838383818110610a3857610a386127e6565b9050604002019050806020016020810190610a5391906126f1565b60036000610a6460208501856125b6565b63ffffffff1681526020810191909152604001600020805461ffff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff90921691909117905550600101610a1d565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c060558282604051610af3929190612815565b60405180910390a15050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b75576040517fd7f733340000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b610b86610b8182612a48565b6117e5565b50565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610bfa576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600381610c0c60208801886125b6565b63ffffffff16815260208082019290925260409081016000208151608081018352815467ffffffffffffffff8116825268010000000000000000900461ffff1693810193909352600181015491830191909152600281018054606084019190610c7490612780565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca090612780565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b50505050508152505090506000610d56868060200190610d0d9190612af5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050506060850151604086810151908b013592506114e8565b9050610d66826000015182611630565b9250610d7183611804565b81516040517f96f4e9f900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916396f4e9f9918691610de7918690600401612b5a565b60206040518083038185885af1158015610e05573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e2a91906127cd565b5060015473ffffffffffffffffffffffffffffffffffffffff1615610f595760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f610e7460208901896125b6565b610e8460a08a0160808b01612340565b600154602087015160405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810186905260a401602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5691906127cd565b92505b50509392505050565b60036020526000908152604090208054600182015460028301805467ffffffffffffffff8416946801000000000000000090940461ffff16939190610fa690612780565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd290612780565b801561101f5780601f10610ff45761010080835404028352916020019161101f565b820191906000526020600020905b81548152906001019060200180831161100257829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611072576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156112ac5736838383818110611090576110906127e6565b90506020028101906110a29190612c6f565b9050600460006003816110b860208601866125b6565b63ffffffff168152602080820192909252604090810160009081205467ffffffffffffffff168452838301949094529190910190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000169055611120908201826125b6565b60046000611134604085016020860161270c565b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055506040518060800160405280826020016020810190611192919061270c565b67ffffffffffffffff1681526020016111b160608401604085016126f1565b61ffff168152606083013560208201526040016111d16080840184612af5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525060039250611219905060208501856125b6565b63ffffffff1681526020808201929092526040908101600020835181549385015161ffff1668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941667ffffffffffffffff9091161792909217825582015160018201556060820151600282019061129c9082612cfd565b5050600190920191506110759050565b507f5c257885b187e43434c98dff62b27d2799de2d31908ae78c56d824a8ec2bdb528282604051610af3929190612e60565b3360009081526002602052604090205460ff16611327576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6113b06116ef565b73ffffffffffffffffffffffffffffffffffffffff8116611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b6c565b610b8681611770565b3360009081526002602052604090205460ff166114a5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114af828261181b565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166114dd576114d8828261190b565b505050565b6114d8838383611a11565b6115306040518060a00160405280606081526020016060815260200160608152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b6040518060a0016040528084815260200161154b8787611a7f565b8152602001600060405190808252806020026020018201604052801561159757816020015b60408051808201909152600080825260208201528152602001906001900390816115705790505b50815260006020808301829052604080518082018252878152820192835280516024810188905292511515604480850191909152815180850390910181526064909301815290820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97a657c9000000000000000000000000000000000000000000000000000000001790529091015295945050505050565b6040517f20487ded00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906320487ded906116a79086908690600401612b5a565b602060405180830381865afa1580156116c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e891906127cd565b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b6c565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6117f781602001518260400151611aab565b610b868160600151611bb6565b47818110156114af576114af3061181b8385612ff1565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b1580156118ab57600080fd5b505af11580156118bf573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f826040516109b191815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611958576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119b2576040519150601f19603f3d011682016040523d82523d6000602084013e6119b7565b606091505b50509050806114d8576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610b6c565b73ffffffffffffffffffffffffffffffffffffffff8216611a5e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d873ffffffffffffffffffffffffffffffffffffffff84168383611c7c565b60608282604051602001611a94929190613004565b604051602081830303815290604052905092915050565b67ffffffffffffffff821660009081526004602090815260408083205463ffffffff16808452600390925282206002018054919291611ae990612780565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1590612780565b8015611b625780601f10611b3757610100808354040283529160200191611b62565b820191906000526020600020905b815481529060010190602001808311611b4557829003601f168201915b505050505090508080519060200120838051906020012014611bb0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b600080611bc283611d09565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611c45908590859067ffffffffffffffff90600401613026565b600060405180830381600087803b158015611c5f57600080fd5b505af1158015611c73573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526114d8908490611d81565b60606000611d1960206051613059565b835114611d52576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d6084826051611e90565b9250611d6d605182613059565b9050611d79848261200a565b915050915091565b6000611de3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208a9092919063ffffffff16565b9050805160001480611e04575080806020019051810190611e04919061306c565b6114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b6c565b606081611e9e81601f613059565b1015611f06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610b6c565b611f108284613059565b84511015611f7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610b6c565b606082158015611f995760405191506000825260208201604052612001565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611fd2578051835260209283019201611fba565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612017826020613059565b83511015612081576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e647300000000000000000000006044820152606401610b6c565b50016020015190565b606061209984846000856120a1565b949350505050565b606082471015612133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b6c565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161215c9190613089565b60006040518083038185875af1925050503d8060008114612199576040519150601f19603f3d011682016040523d82523d6000602084013e61219e565b606091505b50915091506121af878383876121ba565b979650505050505050565b606083156122505782516000036122495773ffffffffffffffffffffffffffffffffffffffff85163b612249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b6c565b5081612099565b61209983838151156122655781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6c919061309b565b803573ffffffffffffffffffffffffffffffffffffffff811681146122bd57600080fd5b919050565b6000806000606084860312156122d757600080fd5b6122e084612299565b92506122ee60208501612299565b9150604084013590509250925092565b60006020828403121561231057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146116e857600080fd5b60006020828403121561235257600080fd5b6116e882612299565b803563ffffffff811681146122bd57600080fd5b803567ffffffffffffffff811681146122bd57600080fd5b60008083601f84011261239957600080fd5b50813567ffffffffffffffff8111156123b157600080fd5b6020830191508360208285010111156123c957600080fd5b9250929050565b6000806000806000608086880312156123e857600080fd5b6123f18661235b565b94506123ff6020870161236f565b935061240d60408701612299565b9250606086013567ffffffffffffffff81111561242957600080fd5b61243588828901612387565b969995985093965092949392505050565b8015158114610b8657600080fd5b6000806040838503121561246757600080fd5b61247083612299565b9150602083013561248081612446565b809150509250929050565b6000806020838503121561249e57600080fd5b823567ffffffffffffffff808211156124b657600080fd5b818501915085601f8301126124ca57600080fd5b8135818111156124d957600080fd5b8660208260061b85010111156124ee57600080fd5b60209290920196919550909350505050565b600060a0828403121561251257600080fd5b50919050565b60006020828403121561252a57600080fd5b813567ffffffffffffffff81111561254157600080fd5b61209984828501612500565b60008060006040848603121561256257600080fd5b833567ffffffffffffffff8082111561257a57600080fd5b61258687838801612500565b9450602086013591508082111561259c57600080fd5b506125a986828701612387565b9497909650939450505050565b6000602082840312156125c857600080fd5b6116e88261235b565b60005b838110156125ec5781810151838201526020016125d4565b50506000910152565b6000815180845261260d8160208601602086016125d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b67ffffffffffffffff8516815261ffff8416602082015282604082015260806060820152600061267260808301846125f5565b9695505050505050565b6000806020838503121561268f57600080fd5b823567ffffffffffffffff808211156126a757600080fd5b818501915085601f8301126126bb57600080fd5b8135818111156126ca57600080fd5b8660208260051b85010111156124ee57600080fd5b803561ffff811681146122bd57600080fd5b60006020828403121561270357600080fd5b6116e8826126df565b60006020828403121561271e57600080fd5b6116e88261236f565b6000806040838503121561273a57600080fd5b61274383612299565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061279457607f821691505b602082108103612512577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000602082840312156127df57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b878110156128675763ffffffff6128418361235b565b16835261ffff6128528684016126df565b1683860152918301919083019060010161282b565b5090979650505050505050565b6040805190810167ffffffffffffffff8111828210171561289757612897612751565b60405290565b60405160a0810167ffffffffffffffff8111828210171561289757612897612751565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561290757612907612751565b604052919050565b600082601f83011261292057600080fd5b813567ffffffffffffffff81111561293a5761293a612751565b61296b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128c0565b81815284602083860101111561298057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126129ae57600080fd5b8135602067ffffffffffffffff8211156129ca576129ca612751565b6129d8818360051b016128c0565b82815260069290921b840181019181810190868411156129f757600080fd5b8286015b84811015612a3d5760408189031215612a145760008081fd5b612a1c612874565b612a2582612299565b815281850135858201528352918301916040016129fb565b509695505050505050565b600060a08236031215612a5a57600080fd5b612a6261289d565b82358152612a726020840161236f565b6020820152604083013567ffffffffffffffff80821115612a9257600080fd5b612a9e3683870161290f565b60408401526060850135915080821115612ab757600080fd5b612ac33683870161290f565b60608401526080850135915080821115612adc57600080fd5b50612ae93682860161299d565b60808301525092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b2a57600080fd5b83018035915067ffffffffffffffff821115612b4557600080fd5b6020019150368190038213156123c957600080fd5b6000604067ffffffffffffffff851683526020604081850152845160a06040860152612b8960e08601826125f5565b9050818601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080878403016060880152612bc483836125f5565b6040890151888203830160808a01528051808352908601945060009350908501905b80841015612c25578451805173ffffffffffffffffffffffffffffffffffffffff16835286015186830152938501936001939093019290860190612be6565b50606089015173ffffffffffffffffffffffffffffffffffffffff1660a08901526080890151888203830160c08a01529550612c6181876125f5565b9a9950505050505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612ca357600080fd5b9190910192915050565b601f8211156114d8576000816000526020600020601f850160051c81016020861015612cd65750805b601f850160051c820191505b81811015612cf557828155600101612ce2565b505050505050565b815167ffffffffffffffff811115612d1757612d17612751565b612d2b81612d258454612780565b84612cad565b602080601f831160018114612d7e5760008415612d485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612cf5565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dcb57888601518255948401946001909101908401612dac565b5085821015612e0757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612fb4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618b3603018112612ee057600080fd5b8a0160a063ffffffff612ef28361235b565b168552612f0088830161236f565b67ffffffffffffffff8082168a88015261ffff612f1e8a86016126df565b16878a0152606084810135908801526080915081840135368590037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112612f6657600080fd5b90930189810193903581811115612f7c57600080fd5b803603851315612f8b57600080fd5b8383890152612f9d8489018287612e17565b988b01989750505093880193505050600101612e7f565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561067257610672612fc2565b600083516130168184602088016125d1565b9190910191825250602001919050565b60608152600061303960608301866125f5565b905083602083015267ffffffffffffffff83166040830152949350505050565b8082018082111561067257610672612fc2565b60006020828403121561307e57600080fd5b81516116e881612446565b60008251612ca38184602087016125d1565b6020815260006116e860208301846125f556fea2646970667358221220575a1e69444cf006aede7fde3ae21bf817d03b9e17176dea715e52060ec5ca3064736f6c63430008160033";
34815
34829
  static readonly abi: readonly [{
34816
34830
  readonly inputs: readonly [{
34817
34831
  readonly internalType: "address";
@@ -35446,7 +35460,7 @@ declare class AxelarDVNAdapter__factory extends ContractFactory {
35446
35460
  }): TransactionRequest;
35447
35461
  attach(address: string): AxelarDVNAdapter;
35448
35462
  connect(signer: Signer): AxelarDVNAdapter__factory;
35449
- static readonly bytecode = "0x6101006040526001805461ffff60a01b191661027160a41b1790553480156200002757600080fd5b506040516200381f3803806200381f8339810160408190526200004a9162000352565b848484846001600160a01b038116620000765760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03166080526200008d33620002cf565b6000806000856001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620000d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f7919062000484565b9250925092506000806000876001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000167919062000484565b925092509250826001600160401b0316866001600160401b03161415806200019557508160ff168560ff1614155b80620001a757508060ff168460ff1614155b15620001c65760405163714f551360e01b815260040160405180910390fd5b6001600160a01b03808a1660a052881660c05260005b8751811015620002ac576001600260008a8481518110620002015762000201620004db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110620002555762000255620004db565b60200260200101516001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e960016040516200029b911515815260200190565b60405180910390a2600101620001dc565b5050506001600160a01b0390971660e05250620004f19950505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200033757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200036b57600080fd5b62000376866200031f565b94506020620003878188016200031f565b60408801519095506001600160401b0380821115620003a557600080fd5b818901915089601f830112620003ba57600080fd5b815181811115620003cf57620003cf6200033c565b8060051b604051601f19603f83011681018181108582111715620003f757620003f76200033c565b60405291825284820192508381018501918c8311156200041657600080fd5b938501935b828510156200043f576200042f856200031f565b845293850193928501926200041b565b80985050505050505062000456606087016200031f565b915062000466608087016200031f565b90509295509295909350565b805160ff811681146200033757600080fd5b6000806000606084860312156200049a57600080fd5b83516001600160401b0381168114620004b257600080fd5b9250620004c26020850162000472565b9150620004d26040850162000472565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516132c36200055c600039600081816103f3015261125c01526000818161052b0152611d610152600081816104ca0152818161101301526119d901526000818161021901528181610a7101528181610d65015261130701526132c36000f3fe60806040526004361061018e5760003560e01c80636a22d8cc116100d6578063a0706d901161007f578063ed94602411610059578063ed9460241461054d578063f2fde38b1461056d578063fd9be5221461058d57600080fd5b8063a0706d90146104b8578063bb37d00c146104ec578063bd3ed5ff1461051957600080fd5b80638da5cb5b116100b05780638da5cb5b1461044a57806395d376d7146104755780639e9449651461048857600080fd5b80636a22d8cc146103e1578063715018a61461041557806381d981af1461042a57600080fd5b806320ac2ece11610138578063429b62e511610112578063429b62e51461036157806349160658146103a15780634b0bddd2146103c157600080fd5b806320ac2ece146102c05780632eb17a9a146102e057806330bb3aac1461033357600080fd5b806311ab10991161016957806311ab1099146102605780631a058efe146102805780631a98b2e0146102a057600080fd5b8062bf2e801461019a57806301e33667146101e5578063116191b61461020757600080fd5b3661019557005b600080fd5b3480156101a657600080fd5b506001546101cd9074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101f157600080fd5b5061020561020036600461241f565b6105ad565b005b34801561021357600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b34801561026c57600080fd5b5061020561027b3660046124a7565b610659565b34801561028c57600080fd5b5061020561029b3660046124e9565b61073f565b3480156102ac57600080fd5b506102056102bb3660046125a0565b610a1a565b3480156102cc57600080fd5b506102056102db36600461267a565b610b3c565b3480156102ec57600080fd5b5061031e6102fb3660046126cb565b805160208183018101805160048252928201919093012091525463ffffffff1681565b60405163ffffffff90911681526020016101dc565b34801561033f57600080fd5b5061035361034e3660046127ae565b610bf4565b6040519081526020016101dc565b34801561036d57600080fd5b5061039161037c36600461267a565b60026020526000908152604090205460ff1681565b60405190151581526020016101dc565b3480156103ad57600080fd5b506102056103bc366004612830565b610d0e565b3480156103cd57600080fd5b506102056103dc3660046128e2565b610e35565b3480156103ed57600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042157600080fd5b50610205610ec8565b34801561043657600080fd5b506102056104453660046124a7565b610edc565b34801561045657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661023b565b610353610483366004612919565b610ff9565b34801561049457600080fd5b506104a86104a336600461298a565b6114b0565b6040516101dc9493929190612a13565b3480156104c457600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b5060015461023b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052557600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055957600080fd5b50610205610568366004612a5a565b6115ee565b34801561057957600080fd5b5061020561058836600461267a565b6116b8565b34801561059957600080fd5b506102056105a8366004612a75565b611774565b3360009081526002602052604090205460ff166105f6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106018383836117cb565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b3360009081526002602052604090205460ff166106a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561070157368383838181106106c0576106c0612a9f565b60400291909101915050602081018035906003906000906106e1908561298a565b63ffffffff168152602081019190915260400160002055506001016106a5565b507fb57a660331a8e55de5763e1af768e8d5a46feeabc201394c94ac4cde36319f1a8282604051610733929190612ace565b60405180910390a15050565b3360009081526002602052604090205460ff16610788576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109e857368383838181106107a6576107a6612a9f565b90506020028101906107b89190612b22565b90506004600360006107cd602085018561298a565b63ffffffff1663ffffffff1681526020019081526020016000206003016040516107f79190612bb3565b9081526040516020918190038201902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556108399082018261298a565b60046108486080840184612c47565b604051610856929190612cac565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9590951694909417909355608083018152830180358352818301916108b791908501612a5a565b61ffff1681526020016108cd6060840184612c47565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016109146080840184612c47565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452506003925061095c9050602085018561298a565b63ffffffff168152602080820192909252604090810160002083518155918301516001830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905582015160028201906109c39082612d04565b50606082015160038201906109d89082612d04565b50506001909201915061078b9050565b507f950ccced17e999da9a8f2583cd16235977dbb7ee83fd38b2967cb8585fa6d1928282604051610733929190612ecb565b60008585604051610a2c929190612cac565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610ab6908e908e908e908e908e9089908d908d908d90600401612fe7565b6020604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190613046565b610b2f576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b3360009081526002602052604090205460ff16610b85576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff85166000908152600360205260409020805460015490919073ffffffffffffffffffffffffffffffffffffffff1615610d045760018054908201546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015273ffffffffffffffffffffffffffffffffffffffff888116602483015261ffff7401000000000000000000000000000000000000000085048116604484015290921660648201526084810185905291169063212cf54f9060a401602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190613063565b91505b5095945050505050565b60008282604051610d20929190612cac565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610da4908b908b908b908b908b90899060040161307c565b6020604051808303816000875af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190613046565b610e1d576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e2b878787878787611800565b5050505050505050565b610e3d611853565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b610ed0611853565b610eda60006118d4565b565b3360009081526002602052604090205460ff16610f25576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610fc75736838383818110610f4357610f43612a9f565b9050604002019050806020016020810190610f5e9190612a5a565b60036000610f6f602085018561298a565b63ffffffff1681526020810191909152604001600020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff9390931692909217909155919091019050610f28565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c0605582826040516107339291906130bd565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461106a576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060038161107c602088018861298a565b63ffffffff1663ffffffff16815260200190815260200160002090508060000154915060008160030180546110b090612b60565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc90612b60565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b50505050509050600082600201805461114190612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461116d90612b60565b80156111ba5780601f1061118f576101008083540402835291602001916111ba565b820191906000526020600020905b81548152906001019060200180831161119d57829003601f168201915b5050505050905060006112148880602001906111d69190612c47565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408a0135611949565b905061121f85611976565b6040517f0c93e3bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c93e3bb90879061129b903090889088908890849060040161310f565b6000604051808303818588803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50506040517f1c92115f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169350631c92115f9250611343915086908690869060040161317b565b600060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505060015473ffffffffffffffffffffffffffffffffffffffff161591506114a590505760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f6113c060208b018b61298a565b6113d060a08c0160808d0161267a565b600180549089015460405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810188905260a401602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190613063565b94505b505050509392505050565b600360205260009081526040902080546001820154600283018054929361ffff909216926114dd90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461150990612b60565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b50505050509080600301805461156b90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461159790612b60565b80156115e45780601f106115b9576101008083540402835291602001916115e4565b820191906000526020600020905b8154815290600101906020018083116115c757829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611637576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6116c0611853565b73ffffffffffffffffffffffffffffffffffffffff8116611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611771816118d4565b50565b3360009081526002602052604090205460ff166117bd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c7828261198d565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166117f5576117f08282611a7d565b505050565b6117f0838383611b83565b61180c86868686611bf1565b61184b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d1392505050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161175f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060828260405160200161195e9291906131be565b60405160208183030381529060405290505b92915050565b47818110156117c7576117c73061198d838561320f565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f82604051610ebc91815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611aca576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b50509050806117f0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161175f565b73ffffffffffffffffffffffffffffffffffffffff8216611bd0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117f073ffffffffffffffffffffffffffffffffffffffff84168383611dd9565b600060048585604051611c05929190612cac565b90815260408051602092819003830190205463ffffffff1660008181526003909352908220600201805491935090611c3c90612b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6890612b60565b8015611cb55780601f10611c8a57610100808354040283529160200191611cb5565b820191906000526020600020905b815481529060010190602001808311611c9857829003601f168201915b5050505050905080805190602001208484604051611cd4929190612cac565b60405180910390201461184b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d1f83611e66565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611da2908590859067ffffffffffffffff90600401613222565b600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526117f0908490611ede565b60606000611e7660206051613255565b835114611eaf576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ebd84826051611fed565b9250611eca605182613255565b9050611ed68482612167565b915050915091565b6000611f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121e79092919063ffffffff16565b9050805160001480611f61575080806020019051810190611f619190613046565b6117f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161175f565b606081611ffb81601f613255565b1015612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161175f565b61206d8284613255565b845110156120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161175f565b6060821580156120f6576040519150600082526020820160405261215e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561212f578051835260209283019201612117565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612174826020613255565b835110156121de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604482015260640161175f565b50016020015190565b60606121f684846000856121fe565b949350505050565b606082471015612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161175f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122b99190613268565b60006040518083038185875af1925050503d80600081146122f6576040519150601f19603f3d011682016040523d82523d6000602084013e6122fb565b606091505b509150915061230c87838387612317565b979650505050505050565b606083156123ad5782516000036123a65773ffffffffffffffffffffffffffffffffffffffff85163b6123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161175f565b50816121f6565b6121f683838151156123c25781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f919061327a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241a57600080fd5b919050565b60008060006060848603121561243457600080fd5b61243d846123f6565b925061244b602085016123f6565b9150604084013590509250925092565b60008083601f84011261246d57600080fd5b50813567ffffffffffffffff81111561248557600080fd5b6020830191508360208260061b85010111156124a057600080fd5b9250929050565b600080602083850312156124ba57600080fd5b823567ffffffffffffffff8111156124d157600080fd5b6124dd8582860161245b565b90969095509350505050565b600080602083850312156124fc57600080fd5b823567ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81358181111561253757600080fd5b8660208260051b850101111561254c57600080fd5b60209290920196919550909350505050565b60008083601f84011261257057600080fd5b50813567ffffffffffffffff81111561258857600080fd5b6020830191508360208285010111156124a057600080fd5b60008060008060008060008060008060c08b8d0312156125bf57600080fd5b8a35995060208b013567ffffffffffffffff808211156125de57600080fd5b6125ea8e838f0161255e565b909b50995060408d013591508082111561260357600080fd5b61260f8e838f0161255e565b909950975060608d013591508082111561262857600080fd5b6126348e838f0161255e565b909750955060808d013591508082111561264d57600080fd5b5061265a8d828e0161255e565b9150809450508092505060a08b013590509295989b9194979a5092959850565b60006020828403121561268c57600080fd5b612695826123f6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126dd57600080fd5b813567ffffffffffffffff808211156126f557600080fd5b818401915084601f83011261270957600080fd5b81358181111561271b5761271b61269c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127615761276161269c565b8160405282815287602084870101111561277a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b803563ffffffff8116811461241a57600080fd5b6000806000806000608086880312156127c657600080fd5b6127cf8661279a565b9450602086013567ffffffffffffffff80821682146127ed57600080fd5b8195506127fc604089016123f6565b9450606088013591508082111561281257600080fd5b5061281f8882890161255e565b969995985093965092949392505050565b60008060008060008060006080888a03121561284b57600080fd5b87359650602088013567ffffffffffffffff8082111561286a57600080fd5b6128768b838c0161255e565b909850965060408a013591508082111561288f57600080fd5b61289b8b838c0161255e565b909650945060608a01359150808211156128b457600080fd5b506128c18a828b0161255e565b989b979a50959850939692959293505050565b801515811461177157600080fd5b600080604083850312156128f557600080fd5b6128fe836123f6565b9150602083013561290e816128d4565b809150509250929050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b9085019060a0828803121561295a57600080fd5b9093506020850135908082111561297057600080fd5b5061297d8682870161255e565b9497909650939450505050565b60006020828403121561299c57600080fd5b6126958261279a565b60005b838110156129c05781810151838201526020016129a8565b50506000910152565b600081518084526129e18160208601602086016129a5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815261ffff84166020820152608060408201526000612a3660808301856129c9565b8281036060840152610d0181856129c9565b803561ffff8116811461241a57600080fd5b600060208284031215612a6c57600080fd5b61269582612a48565b60008060408385031215612a8857600080fd5b612a91836123f6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b87811015612b155763ffffffff612afa8361279a565b16835281850135858401529183019190830190600101612ae4565b5090979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612b5657600080fd5b9190910192915050565b600181811c90821680612b7457607f821691505b602082108103612bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354612bc181612b60565b60018281168015612bd95760018114612c0c57612c3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612c3b565b8760005260208060002060005b85811015612c325781548a820152908401908201612c19565b50505082870194505b50929695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c7c57600080fd5b83018035915067ffffffffffffffff821115612c9757600080fd5b6020019150368190038213156124a057600080fd5b8183823760009101908152919050565b601f8211156117f0576000816000526020600020601f850160051c81016020861015612ce55750805b601f850160051c820191505b8181101561184b57828155600101612cf1565b815167ffffffffffffffff811115612d1e57612d1e61269c565b612d3281612d2c8454612b60565b84612cbc565b602080601f831160018114612d855760008415612d4f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561184b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dd257888601518255948401946001909101908401612db3565b5085821015612e0e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e5357600080fd5b830160208101925035905067ffffffffffffffff811115612e7357600080fd5b8036038213156124a057600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b850182018785805b89811015612fd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c3603018112612f4b578283fd5b8b0160a063ffffffff612f5d8361279a565b16865261ffff612f6e8a8401612a48565b168987015287820135888701526060612f8981840184612e1e565b83838a0152612f9b848a018284612e82565b93505050506080612fae81840184612e1e565b935087830382890152612fc2838583612e82565b988b019897505050938801935050600101612eeb565b50919998505050505050505050565b89815260c06020820152600061300160c083018a8c612e82565b828103604084015261301481898b612e82565b9050866060840152828103608084015261302f818688612e82565b9150508260a08301529a9950505050505050505050565b60006020828403121561305857600080fd5b8151612695816128d4565b60006020828403121561307557600080fd5b5051919050565b868152608060208201526000613096608083018789612e82565b82810360408401526130a9818688612e82565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b87811015612b155763ffffffff6130e98361279a565b16835261ffff6130fa868401612a48565b168386015291830191908301906001016130d3565b600073ffffffffffffffffffffffffffffffffffffffff808816835260a0602084015261313f60a08401886129c9565b838103604085015261315181886129c9565b9050838103606085015261316581876129c9565b9250508084166080840152509695505050505050565b60608152600061318e60608301866129c9565b82810360208401526131a081866129c9565b905082810360408401526131b481856129c9565b9695505050505050565b600083516131d08184602088016129a5565b9190910191825250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611970576119706131e0565b60608152600061323560608301866129c9565b905083602083015267ffffffffffffffff83166040830152949350505050565b80820180821115611970576119706131e0565b60008251612b568184602087016129a5565b60208152600061269560208301846129c956fea2646970667358221220472267c2764f1c7c92588ed19d41b1ca0ac38ee4adcc3b29514cfd518c59b3ab64736f6c63430008160033";
35463
+ static readonly bytecode = "0x6101006040526001805461ffff60a01b191661027160a41b1790553480156200002757600080fd5b506040516200381f3803806200381f8339810160408190526200004a9162000352565b848484846001600160a01b038116620000765760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03166080526200008d33620002cf565b6000806000856001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620000d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f7919062000484565b9250925092506000806000876001600160a01b03166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000141573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000167919062000484565b925092509250826001600160401b0316866001600160401b03161415806200019557508160ff168560ff1614155b80620001a757508060ff168460ff1614155b15620001c65760405163714f551360e01b815260040160405180910390fd5b6001600160a01b03808a1660a052881660c05260005b8751811015620002ac576001600260008a8481518110620002015762000201620004db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110620002555762000255620004db565b60200260200101516001600160a01b03167fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e960016040516200029b911515815260200190565b60405180910390a2600101620001dc565b5050506001600160a01b0390971660e05250620004f19950505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200033757600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200036b57600080fd5b62000376866200031f565b94506020620003878188016200031f565b60408801519095506001600160401b0380821115620003a557600080fd5b818901915089601f830112620003ba57600080fd5b815181811115620003cf57620003cf6200033c565b8060051b604051601f19603f83011681018181108582111715620003f757620003f76200033c565b60405291825284820192508381018501918c8311156200041657600080fd5b938501935b828510156200043f576200042f856200031f565b845293850193928501926200041b565b80985050505050505062000456606087016200031f565b915062000466608087016200031f565b90509295509295909350565b805160ff811681146200033757600080fd5b6000806000606084860312156200049a57600080fd5b83516001600160401b0381168114620004b257600080fd5b9250620004c26020850162000472565b9150620004d26040850162000472565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516132c36200055c600039600081816103f3015261125c01526000818161052b0152611d610152600081816104ca0152818161101301526119d901526000818161021901528181610a7101528181610d65015261130701526132c36000f3fe60806040526004361061018e5760003560e01c80636a22d8cc116100d6578063a0706d901161007f578063ed94602411610059578063ed9460241461054d578063f2fde38b1461056d578063fd9be5221461058d57600080fd5b8063a0706d90146104b8578063bb37d00c146104ec578063bd3ed5ff1461051957600080fd5b80638da5cb5b116100b05780638da5cb5b1461044a57806395d376d7146104755780639e9449651461048857600080fd5b80636a22d8cc146103e1578063715018a61461041557806381d981af1461042a57600080fd5b806320ac2ece11610138578063429b62e511610112578063429b62e51461036157806349160658146103a15780634b0bddd2146103c157600080fd5b806320ac2ece146102c05780632eb17a9a146102e057806330bb3aac1461033357600080fd5b806311ab10991161016957806311ab1099146102605780631a058efe146102805780631a98b2e0146102a057600080fd5b8062bf2e801461019a57806301e33667146101e5578063116191b61461020757600080fd5b3661019557005b600080fd5b3480156101a657600080fd5b506001546101cd9074010000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156101f157600080fd5b5061020561020036600461241f565b6105ad565b005b34801561021357600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b34801561026c57600080fd5b5061020561027b3660046124a7565b610659565b34801561028c57600080fd5b5061020561029b3660046124e9565b61073f565b3480156102ac57600080fd5b506102056102bb3660046125a0565b610a1a565b3480156102cc57600080fd5b506102056102db36600461267a565b610b3c565b3480156102ec57600080fd5b5061031e6102fb3660046126cb565b805160208183018101805160048252928201919093012091525463ffffffff1681565b60405163ffffffff90911681526020016101dc565b34801561033f57600080fd5b5061035361034e3660046127ae565b610bf4565b6040519081526020016101dc565b34801561036d57600080fd5b5061039161037c36600461267a565b60026020526000908152604090205460ff1681565b60405190151581526020016101dc565b3480156103ad57600080fd5b506102056103bc366004612830565b610d0e565b3480156103cd57600080fd5b506102056103dc3660046128e2565b610e35565b3480156103ed57600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561042157600080fd5b50610205610ec8565b34801561043657600080fd5b506102056104453660046124a7565b610edc565b34801561045657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661023b565b610353610483366004612919565b610ff9565b34801561049457600080fd5b506104a86104a336600461298a565b6114b0565b6040516101dc9493929190612a13565b3480156104c457600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b5060015461023b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052557600080fd5b5061023b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055957600080fd5b50610205610568366004612a5a565b6115ee565b34801561057957600080fd5b5061020561058836600461267a565b6116b8565b34801561059957600080fd5b506102056105a8366004612a75565b611774565b3360009081526002602052604090205460ff166105f6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106018383836117cb565b6040805173ffffffffffffffffffffffffffffffffffffffff8581168252602082018490528416917f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e5620910160405180910390a2505050565b3360009081526002602052604090205460ff166106a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561070157368383838181106106c0576106c0612a9f565b60400291909101915050602081018035906003906000906106e1908561298a565b63ffffffff168152602081019190915260400160002055506001016106a5565b507fb57a660331a8e55de5763e1af768e8d5a46feeabc201394c94ac4cde36319f1a8282604051610733929190612ace565b60405180910390a15050565b3360009081526002602052604090205460ff16610788576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109e857368383838181106107a6576107a6612a9f565b90506020028101906107b89190612b22565b90506004600360006107cd602085018561298a565b63ffffffff1663ffffffff1681526020019081526020016000206003016040516107f79190612bb3565b9081526040516020918190038201902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690556108399082018261298a565b60046108486080840184612c47565b604051610856929190612cac565b908152604080516020928190038301812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9590951694909417909355608083018152830180358352818301916108b791908501612a5a565b61ffff1681526020016108cd6060840184612c47565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252506020016109146080840184612c47565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452506003925061095c9050602085018561298a565b63ffffffff168152602080820192909252604090810160002083518155918301516001830180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117905582015160028201906109c39082612d04565b50606082015160038201906109d89082612d04565b50506001909201915061078b9050565b507f950ccced17e999da9a8f2583cd16235977dbb7ee83fd38b2967cb8585fa6d1928282604051610733929190612ecb565b60008585604051610a2c929190612cac565b6040519081900381207f1876eed9000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631876eed990610ab6908e908e908e908e908e9089908d908d908d90600401612fe7565b6020604051808303816000875af1158015610ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af99190613046565b610b2f576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b3360009081526002602052604090205460ff16610b85576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f47f3fc2afa14fc8d55a57ed53e2a26b8e63d5f95adb4869b2da2bffdd38c63d290600090a250565b63ffffffff85166000908152600360205260409020805460015490919073ffffffffffffffffffffffffffffffffffffffff1615610d045760018054908201546040517f212cf54f00000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015273ffffffffffffffffffffffffffffffffffffffff888116602483015261ffff7401000000000000000000000000000000000000000085048116604484015290921660648201526084810185905291169063212cf54f9060a401602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190613063565b91505b5095945050505050565b60008282604051610d20929190612cac565b6040519081900381207f5f6970c3000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635f6970c390610da4908b908b908b908b908b90899060040161307c565b6020604051808303816000875af1158015610dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de79190613046565b610e1d576040517f500c44b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e2b878787878787611800565b5050505050505050565b610e3d611853565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527fe68d2c359a771606c400cf8b87000cf5864010363d6a736e98f5047b7bbe18e991015b60405180910390a25050565b610ed0611853565b610eda60006118d4565b565b3360009081526002602052604090205460ff16610f25576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610fc75736838383818110610f4357610f43612a9f565b9050604002019050806020016020810190610f5e9190612a5a565b60036000610f6f602085018561298a565b63ffffffff1681526020810191909152604001600020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff9390931692909217909155919091019050610f28565b507f69abe4111cf43d39e68d4c540ca52a855f900939e08d7f27a07a068ea5c0605582826040516107339291906130bd565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461106a576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060038161107c602088018861298a565b63ffffffff1663ffffffff16815260200190815260200160002090508060000154915060008160030180546110b090612b60565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc90612b60565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b50505050509050600082600201805461114190612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461116d90612b60565b80156111ba5780601f1061118f576101008083540402835291602001916111ba565b820191906000526020600020905b81548152906001019060200180831161119d57829003601f168201915b5050505050905060006112148880602001906111d69190612c47565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060408a0135611949565b905061121f85611976565b6040517f0c93e3bb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630c93e3bb90879061129b903090889088908890849060040161310f565b6000604051808303818588803b1580156112b457600080fd5b505af11580156112c8573d6000803e3d6000fd5b50506040517f1c92115f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169350631c92115f9250611343915086908690869060040161317b565b600060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505060015473ffffffffffffffffffffffffffffffffffffffff161591506114a590505760015473ffffffffffffffffffffffffffffffffffffffff1663212cf54f6113c060208b018b61298a565b6113d060a08c0160808d0161267a565b600180549089015460405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815263ffffffff909416600485015273ffffffffffffffffffffffffffffffffffffffff909216602484015274010000000000000000000000000000000000000000900461ffff90811660448401521660648201526084810188905260a401602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190613063565b94505b505050509392505050565b600360205260009081526040902080546001820154600283018054929361ffff909216926114dd90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461150990612b60565b80156115565780601f1061152b57610100808354040283529160200191611556565b820191906000526020600020905b81548152906001019060200180831161153957829003601f168201915b50505050509080600301805461156b90612b60565b80601f016020809104026020016040519081016040528092919081815260200182805461159790612b60565b80156115e45780601f106115b9576101008083540402835291602001916115e4565b820191906000526020600020905b8154815290600101906020018083116115c757829003601f168201915b5050505050905084565b3360009081526002602052604090205460ff16611637576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000061ffff8416908102919091179091556040519081527f5cd03093b446ef387fae919d09687fb7200930dc43240f391a08f7f3a8243e619060200160405180910390a150565b6116c0611853565b73ffffffffffffffffffffffffffffffffffffffff8116611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b611771816118d4565b50565b3360009081526002602052604090205460ff166117bd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117c7828261198d565b5050565b73ffffffffffffffffffffffffffffffffffffffff83166117f5576117f08282611a7d565b505050565b6117f0838383611b83565b61180c86868686611bf1565b61184b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d1392505050565b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610eda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161175f565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060828260405160200161195e9291906131be565b60405160208183030381529060405290505b92915050565b47818110156117c7576117c73061198d838561320f565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063fd9be52290604401600060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff167f78473f3f373f7673597f4f0fa5873cb4d375fea6d4339ad6b56dbd411513cb3f82604051610ebc91815260200190565b73ffffffffffffffffffffffffffffffffffffffff8216611aca576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b50509050806117f0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161175f565b73ffffffffffffffffffffffffffffffffffffffff8216611bd0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117f073ffffffffffffffffffffffffffffffffffffffff84168383611dd9565b600060048585604051611c05929190612cac565b90815260408051602092819003830190205463ffffffff1660008181526003909352908220600201805491935090611c3c90612b60565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6890612b60565b8015611cb55780601f10611c8a57610100808354040283529160200191611cb5565b820191906000526020600020905b815481529060010190602001808311611c9857829003601f168201915b5050505050905080805190602001208484604051611cd4929190612cac565b60405180910390201461184b576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080611d1f83611e66565b6040517f0223536e000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630223536e90611da2908590859067ffffffffffffffff90600401613222565b600060405180830381600087803b158015611dbc57600080fd5b505af1158015611dd0573d6000803e3d6000fd5b50505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526117f0908490611ede565b60606000611e7660206051613255565b835114611eaf576040517ffbdf795400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ebd84826051611fed565b9250611eca605182613255565b9050611ed68482612167565b915050915091565b6000611f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121e79092919063ffffffff16565b9050805160001480611f61575080806020019051810190611f619190613046565b6117f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161175f565b606081611ffb81601f613255565b1015612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161175f565b61206d8284613255565b845110156120d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161175f565b6060821580156120f6576040519150600082526020820160405261215e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561212f578051835260209283019201612117565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000612174826020613255565b835110156121de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f427974657333325f6f75744f66426f756e64730000000000000000000000604482015260640161175f565b50016020015190565b60606121f684846000856121fe565b949350505050565b606082471015612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161175f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122b99190613268565b60006040518083038185875af1925050503d80600081146122f6576040519150601f19603f3d011682016040523d82523d6000602084013e6122fb565b606091505b509150915061230c87838387612317565b979650505050505050565b606083156123ad5782516000036123a65773ffffffffffffffffffffffffffffffffffffffff85163b6123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161175f565b50816121f6565b6121f683838151156123c25781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f919061327a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241a57600080fd5b919050565b60008060006060848603121561243457600080fd5b61243d846123f6565b925061244b602085016123f6565b9150604084013590509250925092565b60008083601f84011261246d57600080fd5b50813567ffffffffffffffff81111561248557600080fd5b6020830191508360208260061b85010111156124a057600080fd5b9250929050565b600080602083850312156124ba57600080fd5b823567ffffffffffffffff8111156124d157600080fd5b6124dd8582860161245b565b90969095509350505050565b600080602083850312156124fc57600080fd5b823567ffffffffffffffff8082111561251457600080fd5b818501915085601f83011261252857600080fd5b81358181111561253757600080fd5b8660208260051b850101111561254c57600080fd5b60209290920196919550909350505050565b60008083601f84011261257057600080fd5b50813567ffffffffffffffff81111561258857600080fd5b6020830191508360208285010111156124a057600080fd5b60008060008060008060008060008060c08b8d0312156125bf57600080fd5b8a35995060208b013567ffffffffffffffff808211156125de57600080fd5b6125ea8e838f0161255e565b909b50995060408d013591508082111561260357600080fd5b61260f8e838f0161255e565b909950975060608d013591508082111561262857600080fd5b6126348e838f0161255e565b909750955060808d013591508082111561264d57600080fd5b5061265a8d828e0161255e565b9150809450508092505060a08b013590509295989b9194979a5092959850565b60006020828403121561268c57600080fd5b612695826123f6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156126dd57600080fd5b813567ffffffffffffffff808211156126f557600080fd5b818401915084601f83011261270957600080fd5b81358181111561271b5761271b61269c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156127615761276161269c565b8160405282815287602084870101111561277a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b803563ffffffff8116811461241a57600080fd5b6000806000806000608086880312156127c657600080fd5b6127cf8661279a565b9450602086013567ffffffffffffffff80821682146127ed57600080fd5b8195506127fc604089016123f6565b9450606088013591508082111561281257600080fd5b5061281f8882890161255e565b969995985093965092949392505050565b60008060008060008060006080888a03121561284b57600080fd5b87359650602088013567ffffffffffffffff8082111561286a57600080fd5b6128768b838c0161255e565b909850965060408a013591508082111561288f57600080fd5b61289b8b838c0161255e565b909650945060608a01359150808211156128b457600080fd5b506128c18a828b0161255e565b989b979a50959850939692959293505050565b801515811461177157600080fd5b600080604083850312156128f557600080fd5b6128fe836123f6565b9150602083013561290e816128d4565b809150509250929050565b60008060006040848603121561292e57600080fd5b833567ffffffffffffffff8082111561294657600080fd5b9085019060a0828803121561295a57600080fd5b9093506020850135908082111561297057600080fd5b5061297d8682870161255e565b9497909650939450505050565b60006020828403121561299c57600080fd5b6126958261279a565b60005b838110156129c05781810151838201526020016129a8565b50506000910152565b600081518084526129e18160208601602086016129a5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815261ffff84166020820152608060408201526000612a3660808301856129c9565b8281036060840152610d0181856129c9565b803561ffff8116811461241a57600080fd5b600060208284031215612a6c57600080fd5b61269582612a48565b60008060408385031215612a8857600080fd5b612a91836123f6565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252818101839052600090604080840186845b87811015612b155763ffffffff612afa8361279a565b16835281850135858401529183019190830190600101612ae4565b5090979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612b5657600080fd5b9190910192915050565b600181811c90821680612b7457607f821691505b602082108103612bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000808354612bc181612b60565b60018281168015612bd95760018114612c0c57612c3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612c3b565b8760005260208060002060005b85811015612c325781548a820152908401908201612c19565b50505082870194505b50929695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c7c57600080fd5b83018035915067ffffffffffffffff821115612c9757600080fd5b6020019150368190038213156124a057600080fd5b8183823760009101908152919050565b601f8211156117f0576000816000526020600020601f850160051c81016020861015612ce55750805b601f850160051c820191505b8181101561184b57828155600101612cf1565b815167ffffffffffffffff811115612d1e57612d1e61269c565b612d3281612d2c8454612b60565b84612cbc565b602080601f831160018114612d855760008415612d4f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561184b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612dd257888601518255948401946001909101908401612db3565b5085821015612e0e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e5357600080fd5b830160208101925035905067ffffffffffffffff811115612e7357600080fd5b8036038213156124a057600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528181018390526000906040808401600586901b850182018785805b89811015612fd8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618c3603018112612f4b578283fd5b8b0160a063ffffffff612f5d8361279a565b16865261ffff612f6e8a8401612a48565b168987015287820135888701526060612f8981840184612e1e565b83838a0152612f9b848a018284612e82565b93505050506080612fae81840184612e1e565b935087830382890152612fc2838583612e82565b988b019897505050938801935050600101612eeb565b50919998505050505050505050565b89815260c06020820152600061300160c083018a8c612e82565b828103604084015261301481898b612e82565b9050866060840152828103608084015261302f818688612e82565b9150508260a08301529a9950505050505050505050565b60006020828403121561305857600080fd5b8151612695816128d4565b60006020828403121561307557600080fd5b5051919050565b868152608060208201526000613096608083018789612e82565b82810360408401526130a9818688612e82565b915050826060830152979650505050505050565b6020808252818101839052600090604080840186845b87811015612b155763ffffffff6130e98361279a565b16835261ffff6130fa868401612a48565b168386015291830191908301906001016130d3565b600073ffffffffffffffffffffffffffffffffffffffff808816835260a0602084015261313f60a08401886129c9565b838103604085015261315181886129c9565b9050838103606085015261316581876129c9565b9250508084166080840152509695505050505050565b60608152600061318e60608301866129c9565b82810360208401526131a081866129c9565b905082810360408401526131b481856129c9565b9695505050505050565b600083516131d08184602088016129a5565b9190910191825250602001919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115611970576119706131e0565b60608152600061323560608301866129c9565b905083602083015267ffffffffffffffff83166040830152949350505050565b80820180821115611970576119706131e0565b60008251612b568184602087016129a5565b60208152600061269560208301846129c956fea264697066735822122058099989dca2cb9abc7c52a52b7074c961d41a2e023e65b86964dc8c8a97083e64736f6c63430008160033";
35450
35464
  static readonly abi: readonly [{
35451
35465
  readonly inputs: readonly [{
35452
35466
  readonly internalType: "address";
@@ -36542,7 +36556,7 @@ declare class DVN__factory extends ContractFactory {
36542
36556
  }): TransactionRequest;
36543
36557
  attach(address: string): DVN;
36544
36558
  connect(signer: Signer): DVN__factory;
36545
- static readonly bytecode = "0x60a06040523480156200001157600080fd5b5060405162004c4938038062004c498339810160408190526200003491620004c4565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b03861617905582828686612ee060008660005b8551811015620000d557620000cc7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000b857620000b862000597565b60200260200101516200027b60201b60201c565b60010162000074565b5060005b815181101562000126576200011d7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000b857620000b862000597565b600101620000d9565b505050505050806001600160401b03166000036200015757604051638923b8ef60e01b815260040160405180910390fd5b806001600160401b0316825110156200019d578151604051638626e1a960e01b81526001600160401b039182166004820152908216602482015260440160405180910390fd5b6000805b83518110156200022f576000848281518110620001c257620001c262000597565b60200260200101519050826001600160a01b0316816001600160a01b031611620001ff57604051630721857b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600460205260409020805460ff1916600190811790915590925001620001a1565b50509051600580546001600160401b0393841668010000000000000000026001600160801b0319909116939092169290921717905550505063ffffffff90921660805250620005ea9050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015620002cc57506000828152602081815260408083206001600160a01b038516845290915290205460ff16155b15620003195760018054601590620002f490600160a81b90046001600160401b0316620005ad565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b62000325828262000329565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000325576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003853390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620003f757600080fd5b919050565b600082601f8301126200040e57600080fd5b815160206001600160401b03808311156200042d576200042d620003c9565b8260051b604051601f19603f83011681018181108482111715620004555762000455620003c9565b60405293845260208187018101949081019250878511156200047657600080fd5b6020870191505b84821015620004a1576200049182620003df565b835291830191908301906200047d565b979650505050505050565b80516001600160401b0381168114620003f757600080fd5b60008060008060008060c08789031215620004de57600080fd5b865163ffffffff81168114620004f357600080fd5b60208801519096506001600160401b03808211156200051157600080fd5b6200051f8a838b01620003fc565b96506200052f60408a01620003df565b955060608901519150808211156200054657600080fd5b620005548a838b01620003fc565b94506200056460808a01620004ac565b935060a08901519150808211156200057b57600080fd5b506200058a89828a01620003fc565b9150509295509295509295565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038281166002600160401b03198101620005e057634e487b7160e01b600052601160045260246000fd5b6001019392505050565b608051614635620006146000396000818161085501528181611708015261229801526146356000f3fe60806040526004361061029f5760003560e01c80638585c9451161016e578063c7a823e0116100cb578063d547741f1161007f578063f010cb2311610064578063f010cb2314610906578063f3b4ebd014610926578063fd62e7501461094657600080fd5b8063d547741f146108c6578063dafe0ccc146108e657600080fd5b8063cd88b903116100b0578063cd88b90314610823578063cf34c76814610843578063d2ae21041461088c57600080fd5b8063c7a823e0146107d5578063c7b2370b1461080357600080fd5b8063aef18bf711610122578063c358de0a11610107578063c358de0a14610763578063c416aa5114610783578063c5e193cd146107b557600080fd5b8063aef18bf714610713578063b143044b1461074357600080fd5b806395d376d71161015357806395d376d7146106465780639e94496514610659578063a217fddf146106fe57600080fd5b80638585c945146105d557806391d14854146105f557600080fd5b80632f2ff15d1161021c5780635553fb8e116101d0578063724e78da116101b5578063724e78da14610533578063736c0d5b14610553578063741bef1a1461058357600080fd5b80635553fb8e146104fb5780635c975abb1461051b57600080fd5b806331cb61051161020157806331cb61051461049b57806336568abe146104bb57806352d3b871146104db57600080fd5b80632f2ff15d1461045b57806330bb3aac1461047b57600080fd5b806316c38b3c11610273578063248a9ca311610258578063248a9ca3146103d057806326e67a371461040e5780632de113761461043b57600080fd5b806316c38b3c1461036a5780631703a0181461038a57600080fd5b8062bf2e80146102a457806301e33667146102f857806301ffc9a71461031a5780631095b6d71461034a575b600080fd5b3480156102b057600080fd5b506001546102e0907d010000000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561030457600080fd5b50610318610313366004613732565b610967565b005b34801561032657600080fd5b5061033a610335366004613773565b6109a2565b60405190151581526020016102ef565b34801561035657600080fd5b50610318610365366004613732565b610a3b565b34801561037657600080fd5b506103186103853660046137c3565b610bcb565b34801561039657600080fd5b506005546103b79068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ef565b3480156103dc57600080fd5b506104006103eb3660046137e0565b60009081526020819052604090206001015490565b6040519081526020016102ef565b34801561041a57600080fd5b5061042e61042936600461380d565b610bf0565b6040516102ef9190613828565b34801561044757600080fd5b5061033a61045636600461386f565b610c77565b34801561046757600080fd5b5061031861047636600461388c565b610d5c565b34801561048757600080fd5b50610400610496366004613916565b610eb0565b3480156104a757600080fd5b506103186104b636600461398e565b611027565b3480156104c757600080fd5b506103186104d636600461388c565b61106a565b3480156104e757600080fd5b506103186104f63660046139bc565b61109c565b34801561050757600080fd5b50610400610516366004613a43565b611268565b34801561052757600080fd5b5060015460ff1661033a565b34801561053f57600080fd5b5061031861054e36600461386f565b6113df565b34801561055f57600080fd5b5061033a61056e36600461386f565b60046020526000908152604090205460ff1681565b34801561058f57600080fd5b506002546105b09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ef565b3480156105e157600080fd5b506103186105f0366004613a99565b611484565b34801561060157600080fd5b5061033a61061036600461388c565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610400610654366004613acc565b6114c9565b34801561066557600080fd5b506106c361067436600461380d565b60066020526000908152604090205467ffffffffffffffff81169068010000000000000000810461ffff16906a010000000000000000000090046fffffffffffffffffffffffffffffffff1683565b6040805167ffffffffffffffff909416845261ffff90921660208401526fffffffffffffffffffffffffffffffff16908201526060016102ef565b34801561070a57600080fd5b50610400600081565b34801561071f57600080fd5b5061033a61072e3660046137e0565b60076020526000908152604090205460ff1681565b34801561074f57600080fd5b5061031861075e366004613b7a565b6116a5565b34801561076f57600080fd5b5061031861077e366004613bbc565b6119b5565b34801561078f57600080fd5b506001546105b090610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107c157600080fd5b506104006107d0366004613a43565b611a63565b3480156107e157600080fd5b506107f56107f0366004613bd7565b611c41565b6040516102ef929190613c45565b34801561080f57600080fd5b5061031861081e36600461386f565b611e51565b34801561082f57600080fd5b5061031861083e366004613c92565b611ef5565b34801561084f57600080fd5b506108777f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102ef565b34801561089857600080fd5b506001546103b7907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b3480156108d257600080fd5b506103186108e136600461388c565b611f46565b3480156108f257600080fd5b50610318610901366004613732565b61205b565b34801561091257600080fd5b50610400610921366004613cd8565b612191565b34801561093257600080fd5b50610318610941366004613d43565b6121cd565b34801561095257600080fd5b506005546103b79067ffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561099181612442565b61099c84848461244c565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a3557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610a6581612442565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff16610ae3576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb925060600190505b60405180910390a150505050565b6000610bd681612442565b8115610be857610be461247c565b5050565b610be46124fb565b63ffffffff8116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610c6b57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c3c5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f93c430521711328044ae92d0f1f1286cf040bc4a382f1642bd89984e86630553602052604081205460ff1615610ccc57506000919050565b6001547501000000000000000000000000000000000000000000900467ffffffffffffffff161580610d42575073ffffffffffffffffffffffffffffffffffffffff821660009081527f4ac82e3087b7dedf7f532cbc6915c722df8c1e31f1388c318a617b52760eaf8b602052604090205460ff165b15610d4f57506001919050565b506000919050565b919050565b817f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca811480610daa57507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80610dd457507f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de81145b15610e1757303314610e12576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea1565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758103610e6757610e127fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612442565b6040517f125a2bb7000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b610eab8383612552565b505050565b600083610ebc81610c77565b610ef2576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a16602080840182905267ffffffffffffffff808c16858701528a8416606086015260055468010000000000000000900416608085015260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660a0860152600092835260069091529084902093517f7bfa20a9000000000000000000000000000000000000000000000000000000008152929361010090910490911691637bfa20a991610fda918591908a908a90600401613dc1565b602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190613e8e565b98975050505050505050565b303314611060576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be48282612618565b6040517fcebd140e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756110c681612442565b60005b8281101561122957368484838181106110e4576110e4613ea7565b9050608002019050604051806060016040528082602001602081019061110a9190613a99565b67ffffffffffffffff1681526020016111296060840160408501613bbc565b61ffff1681526020016111426080840160608501613ef6565b6fffffffffffffffffffffffffffffffff16905260066000611167602085018561380d565b63ffffffff1681526020808201929092526040908101600020835181549385015194909201516fffffffffffffffffffffffffffffffff166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff61ffff90951668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941667ffffffffffffffff909316929092179290921792909216919091179055506001016110c9565b507f7dd21e42791b013d1929e86f0c59085e4fca24251f0f1aa81917b3b1611766e0838360405161125b929190613f11565b60405180910390a1505050565b60008161127481610c77565b6112aa576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825261ffff808a16602080850182905267ffffffffffffffff808b168688015289851660608701526005546801000000000000000090041660808601526001547d010000000000000000000000000000000000000000000000000000000000810490931660a08601526000918252600681528582208651918201875291815294517f7bfa20a9000000000000000000000000000000000000000000000000000000008152939461010090920490921692637bfa20a99261139392869260040161401d565b602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d49190613e8e565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561140981612442565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b3033146114bd576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c681612818565b50565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de6114f581612442565b61150560a086016080870161386f565b61150e81610c77565b611544576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810190915260025473ffffffffffffffffffffffffffffffffffffffff16815260009060208082019061157f908a018a61380d565b63ffffffff16815260200161159a60808a0160608b01613a99565b67ffffffffffffffff1681526020016115b960a08a0160808b0161386f565b73ffffffffffffffffffffffffffffffffffffffff908116825260055468010000000000000000900467ffffffffffffffff166020808401919091526001547d010000000000000000000000000000000000000000000000000000000000810461ffff16604090940193909352929350610100909104169063df2b057e90839060069060009061164b908d018d61380d565b63ffffffff1663ffffffff16815260200190815260200160002089896040518563ffffffff1660e01b81526004016116869493929190613dc1565b6020604051808303816000875af11580156113b0573d6000803e3d6000fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116cf81612442565b60005b8281101561099c57368484838181106116ed576116ed613ea7565b90506020028101906116ff91906140f3565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611735602083018361380d565b63ffffffff161461174657506119ad565b4281606001351161175757506119ad565b6000611790611769602084018461380d565b611779604085016020860161386f565b6117866040860186614131565b8660600135612191565b905060006117a5826107f06080860186614131565b509050806117e8576040518481527fd6d90193101048cc1b6edcdc2348f5acf7a4a4a97d3e7b668b74cb7602ab3ebc9060200160405180910390a15050506119ad565b60006118086117fa6040860186614131565b61180391614196565b612930565b905080156118a15760008381526007602052604090205460ff1615611869577f9bb9bddbdf537a2104255307230b323d7982f4512ee8e5bd15df62ddca50ab978484604051611858929190614242565b60405180910390a1505050506119ad565b600083815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b6000806118b4604087016020880161386f565b73ffffffffffffffffffffffffffffffffffffffff166118d76040880188614131565b6040516118e5929190614308565b6000604051808303816000865af19150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b5091509150816119a657821561196c57600085815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b7fdc8cdd96296241bbefda4a8e18ad2e0985a8da6495b34d409cfc4c886ee3b0cf878260405161199d929190614318565b60405180910390a15b5050505050505b6001016116d2565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119df81612442565b600180547fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611478565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611a8f81612442565b82611a9981610c77565b611acf576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825261ffff808b16602080850182905267ffffffffffffffff808c16868801528a851660608701526005546801000000000000000090041660808601526001547d010000000000000000000000000000000000000000000000000000000000810490931660a08601526000918252600681528582208651918201875291815294517fdf2b057e00000000000000000000000000000000000000000000000000000000815293946101009092049092169263df2b057e92611bb892869260040161401d565b6020604051808303816000875af1158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfb9190613e8e565b93507f87e46b0a6199bc734632187269a103c05714ee0adae5b28f30723955724f37ef84604051611c2e91815260200190565b60405180910390a1505050949350505050565b6005546000908190611c6a9068010000000000000000900467ffffffffffffffff166041614360565b8314611c7c5750600090506001611e49565b6000611cd5866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90506000805b60055468010000000000000000900467ffffffffffffffff16811015611e3d573660008888611d0b856041614360565b90611d17866001614377565b611d22906041614360565b92611d2f9392919061438a565b91509150600080611d768785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129cb92505050565b90925090506000816004811115611d8f57611d8f613c16565b14611da857600060019850985050505050505050611e49565b8573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611611def57600060029850985050505050505050611e49565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205460ff16611e3057600060039850985050505050505050611e49565b5093505050600101611cdb565b50600160009350935050505b935093915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611e7b81612442565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611478565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611f1f81612442565b63ffffffff84166000908152600360205260409020611f3f908484613652565b5050505050565b817f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca811480611f9457507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80611fbe57507f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de81145b1561200157303314611ffc576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612051565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758103610e6757611ffc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612442565b610eab8383612a10565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561208581612442565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff16612103576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528516906307b18bde90604401600060405180830381600087803b15801561217357600080fd5b505af1158015612187573d6000803e3d6000fd5b5050505050505050565b600085858386866040516020016121ac9594939291906143b4565b60405160208183030381529060405280519060200120905095945050505050565b4281606001351161220a576040517f4a88c12500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3061221b604083016020840161386f565b73ffffffffffffffffffffffffffffffffffffffff161461229157612246604082016020830161386f565b6040517fd08525e900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610e98565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166122c5602083018361380d565b63ffffffff1614612318576122dd602082018261380d565b6040517fa100763c00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610e98565b600061232a611769602084018461380d565b9050600061233f826107f06080860186614131565b50905080612379576040517f274cf40100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526007602052604090205460ff16156123c5576040517f90ada7a700000000000000000000000000000000000000000000000000000000815260048101839052602401610e98565b6000828152600760205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610eab907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759061243090860186614131565b81019061243d919061386f565b612552565b6114c68133612ad5565b73ffffffffffffffffffffffffffffffffffffffff831661247157610eab8282612b8d565b610eab838383612c93565b612484612d01565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b612503612d70565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336124d1565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156125af575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b1561260e57600180546015906125e7907501000000000000000000000000000000000000000000900467ffffffffffffffff16614426565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610be48282612ddc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481151560ff90911615150361269f576040517fd61afe6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201528115156024820152604401610e98565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055816127115760055461270c9060019067ffffffffffffffff1661444d565b612729565b6005546127299067ffffffffffffffff166001614475565b60055490915067ffffffffffffffff680100000000000000009091048116908216811115612797576040517f8626e1a900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff808416600483015282166024820152604401610e98565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff84161790556040805173ffffffffffffffffffffffffffffffffffffffff8616815284151560208201527f863d338cad74814b108a06288ad5e0e80d56495e0332238b1d2cdcfa0ca8e5ce9101610bbd565b8067ffffffffffffffff1660000361285c576040517f8923b8ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055467ffffffffffffffff9081169082168110156128bb576040517f8626e1a900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff808316600483015283166024820152604401610e98565b600580547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000067ffffffffffffffff8516908102919091179091556040519081527fb600f3cf7f38a4b49bb0c75f722ef69f7e3e39ef3bb4aa8207fd86e724a2324990602001611478565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0223536e0000000000000000000000000000000000000000000000000000000014801590610a3557507fffffffff0000000000000000000000000000000000000000000000000000000082167f704316e500000000000000000000000000000000000000000000000000000000141592915050565b6000808251604103612a015760208301516040840151606085015160001a6129f587828585612ecc565b94509450505050612a09565b506000905060025b9250929050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612a6c575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b15612acb5760018054601590612aa4907501000000000000000000000000000000000000000000900467ffffffffffffffff16614496565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610be48282612fbb565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be457612b1381613072565b612b1e836020613091565b604051602001612b2f9291906144d8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610e9891600401614559565b73ffffffffffffffffffffffffffffffffffffffff8216612bda576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612c34576040519150601f19603f3d011682016040523d82523d6000602084013e612c39565b606091505b5050905080610eab576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610e98565b73ffffffffffffffffffffffffffffffffffffffff8216612ce0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eab73ffffffffffffffffffffffffffffffffffffffff841683836132db565b60015460ff1615612d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610e98565b565b60015460ff16612d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610e98565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612e6e3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612f035750600090506003612fb2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612f57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612fab57600060019250925050612fb2565b9150600090505b94509492505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610be45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610a3573ffffffffffffffffffffffffffffffffffffffff831660145b606060006130a0836002614360565b6130ab906002614377565b67ffffffffffffffff8111156130c3576130c361456c565b6040519080825280601f01601f1916602001820160405280156130ed576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061312457613124613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061318757613187613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006131c3846002614360565b6131ce906001614377565b90505b600181111561326b577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061320f5761320f613ea7565b1a60f81b82828151811061322557613225613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936132648161459b565b90506131d1565b5083156132d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e98565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610eab928692916000916133a6918516908490613453565b90508051600014806133c75750808060200190518101906133c791906145d0565b610eab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e98565b6060613462848460008561346a565b949350505050565b6060824710156134fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e98565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161352591906145ed565b60006040518083038185875af1925050503d8060008114613562576040519150601f19603f3d011682016040523d82523d6000602084013e613567565b606091505b50915091506113d487838387606083156136095782516000036136025773ffffffffffffffffffffffffffffffffffffffff85163b613602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e98565b5081613462565b613462838381511561361e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e989190614559565b82805482825590600052602060002090601f016020900481019282156136eb5791602002820160005b838211156136bc57833560ff1683826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261367b565b80156136e95782816101000a81549060ff02191690556001016020816000010492830192600103026136bc565b505b506136f79291506136fb565b5090565b5b808211156136f757600081556001016136fc565b73ffffffffffffffffffffffffffffffffffffffff811681146114c657600080fd5b60008060006060848603121561374757600080fd5b833561375281613710565b9250602084013561376281613710565b929592945050506040919091013590565b60006020828403121561378557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146132d457600080fd5b80151581146114c657600080fd5b6000602082840312156137d557600080fd5b81356132d4816137b5565b6000602082840312156137f257600080fd5b5035919050565b803563ffffffff81168114610d5757600080fd5b60006020828403121561381f57600080fd5b6132d4826137f9565b6020808252825182820181905260009190848201906040850190845b8181101561386357835160ff1683529284019291840191600101613844565b50909695505050505050565b60006020828403121561388157600080fd5b81356132d481613710565b6000806040838503121561389f57600080fd5b8235915060208301356138b181613710565b809150509250929050565b803567ffffffffffffffff81168114610d5757600080fd5b60008083601f8401126138e657600080fd5b50813567ffffffffffffffff8111156138fe57600080fd5b602083019150836020828501011115612a0957600080fd5b60008060008060006080868803121561392e57600080fd5b613937866137f9565b9450613945602087016138bc565b9350604086013561395581613710565b9250606086013567ffffffffffffffff81111561397157600080fd5b61397d888289016138d4565b969995985093965092949392505050565b600080604083850312156139a157600080fd5b82356139ac81613710565b915060208301356138b1816137b5565b600080602083850312156139cf57600080fd5b823567ffffffffffffffff808211156139e757600080fd5b818501915085601f8301126139fb57600080fd5b813581811115613a0a57600080fd5b8660208260071b8501011115613a1f57600080fd5b60209290920196919550909350505050565b803561ffff81168114610d5757600080fd5b60008060008060808587031215613a5957600080fd5b613a6285613a31565b9350613a7060208601613a31565b9250613a7e604086016138bc565b91506060850135613a8e81613710565b939692955090935050565b600060208284031215613aab57600080fd5b6132d4826138bc565b600060a08284031215613ac657600080fd5b50919050565b600080600060408486031215613ae157600080fd5b833567ffffffffffffffff80821115613af957600080fd5b613b0587838801613ab4565b94506020860135915080821115613b1b57600080fd5b50613b28868287016138d4565b9497909650939450505050565b60008083601f840112613b4757600080fd5b50813567ffffffffffffffff811115613b5f57600080fd5b6020830191508360208260051b8501011115612a0957600080fd5b60008060208385031215613b8d57600080fd5b823567ffffffffffffffff811115613ba457600080fd5b613bb085828601613b35565b90969095509350505050565b600060208284031215613bce57600080fd5b6132d482613a31565b600080600060408486031215613bec57600080fd5b83359250602084013567ffffffffffffffff811115613c0a57600080fd5b613b28868287016138d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b82151581526040810160048310613c85577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b600080600060408486031215613ca757600080fd5b613cb0846137f9565b9250602084013567ffffffffffffffff811115613ccc57600080fd5b613b2886828701613b35565b600080600080600060808688031215613cf057600080fd5b613cf9866137f9565b94506020860135613d0981613710565b9350604086013567ffffffffffffffff811115613d2557600080fd5b613d31888289016138d4565b96999598509660600135949350505050565b600060208284031215613d5557600080fd5b813567ffffffffffffffff811115613d6c57600080fd5b61346284828501613ab4565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610140613e39838873ffffffffffffffffffffffffffffffffffffffff80825116835263ffffffff6020830151166020840152604082015167ffffffffffffffff808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b613e7a60c08401875467ffffffffffffffff81168252604081811c61ffff16602084015260509190911c6fffffffffffffffffffffffffffffffff16910152565b806101208401526113d48184018587613d78565b600060208284031215613ea057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80356fffffffffffffffffffffffffffffffff81168114610d5757600080fd5b600060208284031215613f0857600080fd5b6132d482613ed6565b6020808252818101839052600090604080840186845b87811015613fa25763ffffffff613f3d836137f9565b16835267ffffffffffffffff613f548684016138bc565b168584015261ffff613f67858401613a31565b168484015260606fffffffffffffffffffffffffffffffff613f8a828501613ed6565b16908401526080928301929190910190600101613f27565b5090979650505050505050565b60005b83811015613fca578181015183820152602001613fb2565b50506000910152565b60008151808452613feb816020860160208601613faf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000610140614095838773ffffffffffffffffffffffffffffffffffffffff80825116835263ffffffff6020830151166020840152604082015167ffffffffffffffff808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b6140d660c08401865467ffffffffffffffff81168252604081811c61ffff16602084015260509190911c6fffffffffffffffffffffffffffffffff16910152565b806101208401526140e981840185613fd3565b9695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261412757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261416657600080fd5b83018035915067ffffffffffffffff82111561418157600080fd5b602001915036819003821315612a0957600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156141d65780818660040360031b1b83161692505b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261421357600080fd5b830160208101925035905067ffffffffffffffff81111561423357600080fd5b803603821315612a0957600080fd5b6040815263ffffffff614254846137f9565b1660408201526000602084013561426a81613710565b73ffffffffffffffffffffffffffffffffffffffff16606083015261429260408501856141de565b60a060808501526142a760e085018284613d78565b915050606085013560a08401526142c160808601866141de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160c08601526142f6838284613d78565b93505050508260208301529392505050565b8183823760009101908152919050565b8281526040602082015260006134626040830184613fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3557610a35614331565b80820180821115610a3557610a35614331565b6000808585111561439a57600080fd5b838611156143a757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b600067ffffffffffffffff80831681810361444357614443614331565b6001019392505050565b67ffffffffffffffff82811682821603908082111561446e5761446e614331565b5092915050565b67ffffffffffffffff81811683821601908082111561446e5761446e614331565b600067ffffffffffffffff8216806144b0576144b0614331565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614510816017850160208801613faf565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161454d816028840160208801613faf565b01602801949350505050565b6020815260006132d46020830184613fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000816145aa576145aa614331565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000602082840312156145e257600080fd5b81516132d4816137b5565b60008251614127818460208701613faf56fea26469706673582212203c7046c9eb5bda0af554cde558cad3f69097f4b9ae5abce894519c57d84405b964736f6c63430008160033";
36559
+ static readonly bytecode = "0x60a06040523480156200001157600080fd5b5060405162004c4938038062004c498339810160408190526200003491620004c4565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b03861617905582828686612ee060008660005b8551811015620000d557620000cc7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000b857620000b862000597565b60200260200101516200027b60201b60201c565b60010162000074565b5060005b815181101562000126576200011d7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000b857620000b862000597565b600101620000d9565b505050505050806001600160401b03166000036200015757604051638923b8ef60e01b815260040160405180910390fd5b806001600160401b0316825110156200019d578151604051638626e1a960e01b81526001600160401b039182166004820152908216602482015260440160405180910390fd5b6000805b83518110156200022f576000848281518110620001c257620001c262000597565b60200260200101519050826001600160a01b0316816001600160a01b031611620001ff57604051630721857b60e01b815260040160405180910390fd5b6001600160a01b0381166000908152600460205260409020805460ff1916600190811790915590925001620001a1565b50509051600580546001600160401b0393841668010000000000000000026001600160801b0319909116939092169290921717905550505063ffffffff90921660805250620005ea9050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015620002cc57506000828152602081815260408083206001600160a01b038516845290915290205460ff16155b15620003195760018054601590620002f490600160a81b90046001600160401b0316620005ad565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b62000325828262000329565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000325576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003853390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620003f757600080fd5b919050565b600082601f8301126200040e57600080fd5b815160206001600160401b03808311156200042d576200042d620003c9565b8260051b604051601f19603f83011681018181108482111715620004555762000455620003c9565b60405293845260208187018101949081019250878511156200047657600080fd5b6020870191505b84821015620004a1576200049182620003df565b835291830191908301906200047d565b979650505050505050565b80516001600160401b0381168114620003f757600080fd5b60008060008060008060c08789031215620004de57600080fd5b865163ffffffff81168114620004f357600080fd5b60208801519096506001600160401b03808211156200051157600080fd5b6200051f8a838b01620003fc565b96506200052f60408a01620003df565b955060608901519150808211156200054657600080fd5b620005548a838b01620003fc565b94506200056460808a01620004ac565b935060a08901519150808211156200057b57600080fd5b506200058a89828a01620003fc565b9150509295509295509295565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038281166002600160401b03198101620005e057634e487b7160e01b600052601160045260246000fd5b6001019392505050565b608051614635620006146000396000818161085501528181611708015261229801526146356000f3fe60806040526004361061029f5760003560e01c80638585c9451161016e578063c7a823e0116100cb578063d547741f1161007f578063f010cb2311610064578063f010cb2314610906578063f3b4ebd014610926578063fd62e7501461094657600080fd5b8063d547741f146108c6578063dafe0ccc146108e657600080fd5b8063cd88b903116100b0578063cd88b90314610823578063cf34c76814610843578063d2ae21041461088c57600080fd5b8063c7a823e0146107d5578063c7b2370b1461080357600080fd5b8063aef18bf711610122578063c358de0a11610107578063c358de0a14610763578063c416aa5114610783578063c5e193cd146107b557600080fd5b8063aef18bf714610713578063b143044b1461074357600080fd5b806395d376d71161015357806395d376d7146106465780639e94496514610659578063a217fddf146106fe57600080fd5b80638585c945146105d557806391d14854146105f557600080fd5b80632f2ff15d1161021c5780635553fb8e116101d0578063724e78da116101b5578063724e78da14610533578063736c0d5b14610553578063741bef1a1461058357600080fd5b80635553fb8e146104fb5780635c975abb1461051b57600080fd5b806331cb61051161020157806331cb61051461049b57806336568abe146104bb57806352d3b871146104db57600080fd5b80632f2ff15d1461045b57806330bb3aac1461047b57600080fd5b806316c38b3c11610273578063248a9ca311610258578063248a9ca3146103d057806326e67a371461040e5780632de113761461043b57600080fd5b806316c38b3c1461036a5780631703a0181461038a57600080fd5b8062bf2e80146102a457806301e33667146102f857806301ffc9a71461031a5780631095b6d71461034a575b600080fd5b3480156102b057600080fd5b506001546102e0907d010000000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561030457600080fd5b50610318610313366004613732565b610967565b005b34801561032657600080fd5b5061033a610335366004613773565b6109a2565b60405190151581526020016102ef565b34801561035657600080fd5b50610318610365366004613732565b610a3b565b34801561037657600080fd5b506103186103853660046137c3565b610bcb565b34801561039657600080fd5b506005546103b79068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102ef565b3480156103dc57600080fd5b506104006103eb3660046137e0565b60009081526020819052604090206001015490565b6040519081526020016102ef565b34801561041a57600080fd5b5061042e61042936600461380d565b610bf0565b6040516102ef9190613828565b34801561044757600080fd5b5061033a61045636600461386f565b610c77565b34801561046757600080fd5b5061031861047636600461388c565b610d5c565b34801561048757600080fd5b50610400610496366004613916565b610eb0565b3480156104a757600080fd5b506103186104b636600461398e565b611027565b3480156104c757600080fd5b506103186104d636600461388c565b61106a565b3480156104e757600080fd5b506103186104f63660046139bc565b61109c565b34801561050757600080fd5b50610400610516366004613a43565b611268565b34801561052757600080fd5b5060015460ff1661033a565b34801561053f57600080fd5b5061031861054e36600461386f565b6113df565b34801561055f57600080fd5b5061033a61056e36600461386f565b60046020526000908152604090205460ff1681565b34801561058f57600080fd5b506002546105b09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ef565b3480156105e157600080fd5b506103186105f0366004613a99565b611484565b34801561060157600080fd5b5061033a61061036600461388c565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b610400610654366004613acc565b6114c9565b34801561066557600080fd5b506106c361067436600461380d565b60066020526000908152604090205467ffffffffffffffff81169068010000000000000000810461ffff16906a010000000000000000000090046fffffffffffffffffffffffffffffffff1683565b6040805167ffffffffffffffff909416845261ffff90921660208401526fffffffffffffffffffffffffffffffff16908201526060016102ef565b34801561070a57600080fd5b50610400600081565b34801561071f57600080fd5b5061033a61072e3660046137e0565b60076020526000908152604090205460ff1681565b34801561074f57600080fd5b5061031861075e366004613b7a565b6116a5565b34801561076f57600080fd5b5061031861077e366004613bbc565b6119b5565b34801561078f57600080fd5b506001546105b090610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107c157600080fd5b506104006107d0366004613a43565b611a63565b3480156107e157600080fd5b506107f56107f0366004613bd7565b611c41565b6040516102ef929190613c45565b34801561080f57600080fd5b5061031861081e36600461386f565b611e51565b34801561082f57600080fd5b5061031861083e366004613c92565b611ef5565b34801561084f57600080fd5b506108777f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102ef565b34801561089857600080fd5b506001546103b7907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b3480156108d257600080fd5b506103186108e136600461388c565b611f46565b3480156108f257600080fd5b50610318610901366004613732565b61205b565b34801561091257600080fd5b50610400610921366004613cd8565b612191565b34801561093257600080fd5b50610318610941366004613d43565b6121cd565b34801561095257600080fd5b506005546103b79067ffffffffffffffff1681565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561099181612442565b61099c84848461244c565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a3557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610a6581612442565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff16610ae3576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610b5357600080fd5b505af1158015610b67573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb925060600190505b60405180910390a150505050565b6000610bd681612442565b8115610be857610be461247c565b5050565b610be46124fb565b63ffffffff8116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610c6b57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610c3c5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f93c430521711328044ae92d0f1f1286cf040bc4a382f1642bd89984e86630553602052604081205460ff1615610ccc57506000919050565b6001547501000000000000000000000000000000000000000000900467ffffffffffffffff161580610d42575073ffffffffffffffffffffffffffffffffffffffff821660009081527f4ac82e3087b7dedf7f532cbc6915c722df8c1e31f1388c318a617b52760eaf8b602052604090205460ff165b15610d4f57506001919050565b506000919050565b919050565b817f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca811480610daa57507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80610dd457507f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de81145b15610e1757303314610e12576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ea1565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758103610e6757610e127fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612442565b6040517f125a2bb7000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b610eab8383612552565b505050565b600083610ebc81610c77565b610ef2576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a16602080840182905267ffffffffffffffff808c16858701528a8416606086015260055468010000000000000000900416608085015260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660a0860152600092835260069091529084902093517f7bfa20a9000000000000000000000000000000000000000000000000000000008152929361010090910490911691637bfa20a991610fda918591908a908a90600401613dc1565b602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b9190613e8e565b98975050505050505050565b303314611060576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be48282612618565b6040517fcebd140e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756110c681612442565b60005b8281101561122957368484838181106110e4576110e4613ea7565b9050608002019050604051806060016040528082602001602081019061110a9190613a99565b67ffffffffffffffff1681526020016111296060840160408501613bbc565b61ffff1681526020016111426080840160608501613ef6565b6fffffffffffffffffffffffffffffffff16905260066000611167602085018561380d565b63ffffffff1681526020808201929092526040908101600020835181549385015194909201516fffffffffffffffffffffffffffffffff166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff61ffff90951668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941667ffffffffffffffff909316929092179290921792909216919091179055506001016110c9565b507f7dd21e42791b013d1929e86f0c59085e4fca24251f0f1aa81917b3b1611766e0838360405161125b929190613f11565b60405180910390a1505050565b60008161127481610c77565b6112aa576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825261ffff808a16602080850182905267ffffffffffffffff808b168688015289851660608701526005546801000000000000000090041660808601526001547d010000000000000000000000000000000000000000000000000000000000810490931660a08601526000918252600681528582208651918201875291815294517f7bfa20a9000000000000000000000000000000000000000000000000000000008152939461010090920490921692637bfa20a99261139392869260040161401d565b602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d49190613e8e565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561140981612442565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b3033146114bd576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c681612818565b50565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de6114f581612442565b61150560a086016080870161386f565b61150e81610c77565b611544576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c0810190915260025473ffffffffffffffffffffffffffffffffffffffff16815260009060208082019061157f908a018a61380d565b63ffffffff16815260200161159a60808a0160608b01613a99565b67ffffffffffffffff1681526020016115b960a08a0160808b0161386f565b73ffffffffffffffffffffffffffffffffffffffff908116825260055468010000000000000000900467ffffffffffffffff166020808401919091526001547d010000000000000000000000000000000000000000000000000000000000810461ffff16604090940193909352929350610100909104169063df2b057e90839060069060009061164b908d018d61380d565b63ffffffff1663ffffffff16815260200190815260200160002089896040518563ffffffff1660e01b81526004016116869493929190613dc1565b6020604051808303816000875af11580156113b0573d6000803e3d6000fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116cf81612442565b60005b8281101561099c57368484838181106116ed576116ed613ea7565b90506020028101906116ff91906140f3565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016611735602083018361380d565b63ffffffff161461174657506119ad565b4281606001351161175757506119ad565b6000611790611769602084018461380d565b611779604085016020860161386f565b6117866040860186614131565b8660600135612191565b905060006117a5826107f06080860186614131565b509050806117e8576040518481527fd6d90193101048cc1b6edcdc2348f5acf7a4a4a97d3e7b668b74cb7602ab3ebc9060200160405180910390a15050506119ad565b60006118086117fa6040860186614131565b61180391614196565b612930565b905080156118a15760008381526007602052604090205460ff1615611869577f9bb9bddbdf537a2104255307230b323d7982f4512ee8e5bd15df62ddca50ab978484604051611858929190614242565b60405180910390a1505050506119ad565b600083815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b6000806118b4604087016020880161386f565b73ffffffffffffffffffffffffffffffffffffffff166118d76040880188614131565b6040516118e5929190614308565b6000604051808303816000865af19150503d8060008114611922576040519150601f19603f3d011682016040523d82523d6000602084013e611927565b606091505b5091509150816119a657821561196c57600085815260076020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b7fdc8cdd96296241bbefda4a8e18ad2e0985a8da6495b34d409cfc4c886ee3b0cf878260405161199d929190614318565b60405180910390a15b5050505050505b6001016116d2565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119df81612442565b600180547fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611478565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611a8f81612442565b82611a9981610c77565b611acf576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160c08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825261ffff808b16602080850182905267ffffffffffffffff808c16868801528a851660608701526005546801000000000000000090041660808601526001547d010000000000000000000000000000000000000000000000000000000000810490931660a08601526000918252600681528582208651918201875291815294517fdf2b057e00000000000000000000000000000000000000000000000000000000815293946101009092049092169263df2b057e92611bb892869260040161401d565b6020604051808303816000875af1158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfb9190613e8e565b93507f87e46b0a6199bc734632187269a103c05714ee0adae5b28f30723955724f37ef84604051611c2e91815260200190565b60405180910390a1505050949350505050565b6005546000908190611c6a9068010000000000000000900467ffffffffffffffff166041614360565b8314611c7c5750600090506001611e49565b6000611cd5866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b90506000805b60055468010000000000000000900467ffffffffffffffff16811015611e3d573660008888611d0b856041614360565b90611d17866001614377565b611d22906041614360565b92611d2f9392919061438a565b91509150600080611d768785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129cb92505050565b90925090506000816004811115611d8f57611d8f613c16565b14611da857600060019850985050505050505050611e49565b8573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611611def57600060029850985050505050505050611e49565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205460ff16611e3057600060039850985050505050505050611e49565b5093505050600101611cdb565b50600160009350935050505b935093915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611e7b81612442565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611478565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611f1f81612442565b63ffffffff84166000908152600360205260409020611f3f908484613652565b5050505050565b817f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca811480611f9457507f4270fae16c6d150d00e80b689daca99e8073b1838ff2b6063a37be9d851283e481145b80611fbe57507f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de81145b1561200157303314611ffc576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612051565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758103610e6757611ffc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612442565b610eab8383612a10565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561208581612442565b73ffffffffffffffffffffffffffffffffffffffff841660009081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff16612103576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f07b18bde00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490528516906307b18bde90604401600060405180830381600087803b15801561217357600080fd5b505af1158015612187573d6000803e3d6000fd5b5050505050505050565b600085858386866040516020016121ac9594939291906143b4565b60405160208183030381529060405280519060200120905095945050505050565b4281606001351161220a576040517f4a88c12500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3061221b604083016020840161386f565b73ffffffffffffffffffffffffffffffffffffffff161461229157612246604082016020830161386f565b6040517fd08525e900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610e98565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166122c5602083018361380d565b63ffffffff1614612318576122dd602082018261380d565b6040517fa100763c00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610e98565b600061232a611769602084018461380d565b9050600061233f826107f06080860186614131565b50905080612379576040517f274cf40100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526007602052604090205460ff16156123c5576040517f90ada7a700000000000000000000000000000000000000000000000000000000815260048101839052602401610e98565b6000828152600760205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610eab907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217759061243090860186614131565b81019061243d919061386f565b612552565b6114c68133612ad5565b73ffffffffffffffffffffffffffffffffffffffff831661247157610eab8282612b8d565b610eab838383612c93565b612484612d01565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b612503612d70565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336124d1565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156125af575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b1561260e57600180546015906125e7907501000000000000000000000000000000000000000000900467ffffffffffffffff16614426565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610be48282612ddc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205481151560ff90911615150361269f576040517fd61afe6e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201528115156024820152604401610e98565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016831515179055816127115760055461270c9060019067ffffffffffffffff1661444d565b612729565b6005546127299067ffffffffffffffff166001614475565b60055490915067ffffffffffffffff680100000000000000009091048116908216811115612797576040517f8626e1a900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff808416600483015282166024820152604401610e98565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff84161790556040805173ffffffffffffffffffffffffffffffffffffffff8616815284151560208201527f863d338cad74814b108a06288ad5e0e80d56495e0332238b1d2cdcfa0ca8e5ce9101610bbd565b8067ffffffffffffffff1660000361285c576040517f8923b8ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055467ffffffffffffffff9081169082168110156128bb576040517f8626e1a900000000000000000000000000000000000000000000000000000000815267ffffffffffffffff808316600483015283166024820152604401610e98565b600580547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000067ffffffffffffffff8516908102919091179091556040519081527fb600f3cf7f38a4b49bb0c75f722ef69f7e3e39ef3bb4aa8207fd86e724a2324990602001611478565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0223536e0000000000000000000000000000000000000000000000000000000014801590610a3557507fffffffff0000000000000000000000000000000000000000000000000000000082167f704316e500000000000000000000000000000000000000000000000000000000141592915050565b6000808251604103612a015760208301516040840151606085015160001a6129f587828585612ecc565b94509450505050612a09565b506000905060025b9250929050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612a6c575060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b15612acb5760018054601590612aa4907501000000000000000000000000000000000000000000900467ffffffffffffffff16614496565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610be48282612fbb565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be457612b1381613072565b612b1e836020613091565b604051602001612b2f9291906144d8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610e9891600401614559565b73ffffffffffffffffffffffffffffffffffffffff8216612bda576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612c34576040519150601f19603f3d011682016040523d82523d6000602084013e612c39565b606091505b5050905080610eab576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610e98565b73ffffffffffffffffffffffffffffffffffffffff8216612ce0576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eab73ffffffffffffffffffffffffffffffffffffffff841683836132db565b60015460ff1615612d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610e98565b565b60015460ff16612d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610e98565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612e6e3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612f035750600090506003612fb2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612f57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612fab57600060019250925050612fb2565b9150600090505b94509492505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610be45760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610a3573ffffffffffffffffffffffffffffffffffffffff831660145b606060006130a0836002614360565b6130ab906002614377565b67ffffffffffffffff8111156130c3576130c361456c565b6040519080825280601f01601f1916602001820160405280156130ed576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061312457613124613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061318757613187613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006131c3846002614360565b6131ce906001614377565b90505b600181111561326b577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061320f5761320f613ea7565b1a60f81b82828151811061322557613225613ea7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936132648161459b565b90506131d1565b5083156132d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610e98565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610eab928692916000916133a6918516908490613453565b90508051600014806133c75750808060200190518101906133c791906145d0565b610eab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610e98565b6060613462848460008561346a565b949350505050565b6060824710156134fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610e98565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161352591906145ed565b60006040518083038185875af1925050503d8060008114613562576040519150601f19603f3d011682016040523d82523d6000602084013e613567565b606091505b50915091506113d487838387606083156136095782516000036136025773ffffffffffffffffffffffffffffffffffffffff85163b613602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e98565b5081613462565b613462838381511561361e5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e989190614559565b82805482825590600052602060002090601f016020900481019282156136eb5791602002820160005b838211156136bc57833560ff1683826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261367b565b80156136e95782816101000a81549060ff02191690556001016020816000010492830192600103026136bc565b505b506136f79291506136fb565b5090565b5b808211156136f757600081556001016136fc565b73ffffffffffffffffffffffffffffffffffffffff811681146114c657600080fd5b60008060006060848603121561374757600080fd5b833561375281613710565b9250602084013561376281613710565b929592945050506040919091013590565b60006020828403121561378557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146132d457600080fd5b80151581146114c657600080fd5b6000602082840312156137d557600080fd5b81356132d4816137b5565b6000602082840312156137f257600080fd5b5035919050565b803563ffffffff81168114610d5757600080fd5b60006020828403121561381f57600080fd5b6132d4826137f9565b6020808252825182820181905260009190848201906040850190845b8181101561386357835160ff1683529284019291840191600101613844565b50909695505050505050565b60006020828403121561388157600080fd5b81356132d481613710565b6000806040838503121561389f57600080fd5b8235915060208301356138b181613710565b809150509250929050565b803567ffffffffffffffff81168114610d5757600080fd5b60008083601f8401126138e657600080fd5b50813567ffffffffffffffff8111156138fe57600080fd5b602083019150836020828501011115612a0957600080fd5b60008060008060006080868803121561392e57600080fd5b613937866137f9565b9450613945602087016138bc565b9350604086013561395581613710565b9250606086013567ffffffffffffffff81111561397157600080fd5b61397d888289016138d4565b969995985093965092949392505050565b600080604083850312156139a157600080fd5b82356139ac81613710565b915060208301356138b1816137b5565b600080602083850312156139cf57600080fd5b823567ffffffffffffffff808211156139e757600080fd5b818501915085601f8301126139fb57600080fd5b813581811115613a0a57600080fd5b8660208260071b8501011115613a1f57600080fd5b60209290920196919550909350505050565b803561ffff81168114610d5757600080fd5b60008060008060808587031215613a5957600080fd5b613a6285613a31565b9350613a7060208601613a31565b9250613a7e604086016138bc565b91506060850135613a8e81613710565b939692955090935050565b600060208284031215613aab57600080fd5b6132d4826138bc565b600060a08284031215613ac657600080fd5b50919050565b600080600060408486031215613ae157600080fd5b833567ffffffffffffffff80821115613af957600080fd5b613b0587838801613ab4565b94506020860135915080821115613b1b57600080fd5b50613b28868287016138d4565b9497909650939450505050565b60008083601f840112613b4757600080fd5b50813567ffffffffffffffff811115613b5f57600080fd5b6020830191508360208260051b8501011115612a0957600080fd5b60008060208385031215613b8d57600080fd5b823567ffffffffffffffff811115613ba457600080fd5b613bb085828601613b35565b90969095509350505050565b600060208284031215613bce57600080fd5b6132d482613a31565b600080600060408486031215613bec57600080fd5b83359250602084013567ffffffffffffffff811115613c0a57600080fd5b613b28868287016138d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b82151581526040810160048310613c85577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b600080600060408486031215613ca757600080fd5b613cb0846137f9565b9250602084013567ffffffffffffffff811115613ccc57600080fd5b613b2886828701613b35565b600080600080600060808688031215613cf057600080fd5b613cf9866137f9565b94506020860135613d0981613710565b9350604086013567ffffffffffffffff811115613d2557600080fd5b613d31888289016138d4565b96999598509660600135949350505050565b600060208284031215613d5557600080fd5b813567ffffffffffffffff811115613d6c57600080fd5b61346284828501613ab4565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610140613e39838873ffffffffffffffffffffffffffffffffffffffff80825116835263ffffffff6020830151166020840152604082015167ffffffffffffffff808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b613e7a60c08401875467ffffffffffffffff81168252604081811c61ffff16602084015260509190911c6fffffffffffffffffffffffffffffffff16910152565b806101208401526113d48184018587613d78565b600060208284031215613ea057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80356fffffffffffffffffffffffffffffffff81168114610d5757600080fd5b600060208284031215613f0857600080fd5b6132d482613ed6565b6020808252818101839052600090604080840186845b87811015613fa25763ffffffff613f3d836137f9565b16835267ffffffffffffffff613f548684016138bc565b168584015261ffff613f67858401613a31565b168484015260606fffffffffffffffffffffffffffffffff613f8a828501613ed6565b16908401526080928301929190910190600101613f27565b5090979650505050505050565b60005b83811015613fca578181015183820152602001613fb2565b50506000910152565b60008151808452613feb816020860160208601613faf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000610140614095838773ffffffffffffffffffffffffffffffffffffffff80825116835263ffffffff6020830151166020840152604082015167ffffffffffffffff808216604086015282606085015116606086015280608085015116608086015250505061ffff60a08201511660a08301525050565b6140d660c08401865467ffffffffffffffff81168252604081811c61ffff16602084015260509190911c6fffffffffffffffffffffffffffffffff16910152565b806101208401526140e981840185613fd3565b9695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261412757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261416657600080fd5b83018035915067ffffffffffffffff82111561418157600080fd5b602001915036819003821315612a0957600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156141d65780818660040360031b1b83161692505b505092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261421357600080fd5b830160208101925035905067ffffffffffffffff81111561423357600080fd5b803603821315612a0957600080fd5b6040815263ffffffff614254846137f9565b1660408201526000602084013561426a81613710565b73ffffffffffffffffffffffffffffffffffffffff16606083015261429260408501856141de565b60a060808501526142a760e085018284613d78565b915050606085013560a08401526142c160808601866141de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160c08601526142f6838284613d78565b93505050508260208301529392505050565b8183823760009101908152919050565b8281526040602082015260006134626040830184613fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a3557610a35614331565b80820180821115610a3557610a35614331565b6000808585111561439a57600080fd5b838611156143a757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008660e01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660048201528360188201528183603883013760009101603801908152949350505050565b600067ffffffffffffffff80831681810361444357614443614331565b6001019392505050565b67ffffffffffffffff82811682821603908082111561446e5761446e614331565b5092915050565b67ffffffffffffffff81811683821601908082111561446e5761446e614331565b600067ffffffffffffffff8216806144b0576144b0614331565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614510816017850160208801613faf565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161454d816028840160208801613faf565b01602801949350505050565b6020815260006132d46020830184613fd3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000816145aa576145aa614331565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000602082840312156145e257600080fd5b81516132d4816137b5565b60008251614127818460208701613faf56fea2646970667358221220315d574dd855fce3ffa5758a1e471075d42c1ba3369e77265e680a4a0c2c7a4c64736f6c63430008160033";
36546
36560
  static readonly abi: readonly [{
36547
36561
  readonly inputs: readonly [{
36548
36562
  readonly internalType: "uint32";
@@ -39500,7 +39514,7 @@ declare class ReceiveUln301__factory extends ContractFactory {
39500
39514
  }): TransactionRequest;
39501
39515
  attach(address: string): ReceiveUln301;
39502
39516
  connect(signer: Signer): ReceiveUln301__factory;
39503
- static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200361c3803806200361c8339810160408190526200003491620000b2565b6001600160a01b03821660805263ffffffff811660a0528181620000583362000062565b5050505062000104565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060408385031215620000c657600080fd5b82516001600160a01b0381168114620000de57600080fd5b602084015190925063ffffffff81168114620000f957600080fd5b809150509250929050565b60805160a0516134dd6200013f60003960008181610e97015261111b015260008181610f9a015281816112bd01526120e101526134dd6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806354fd4d50116100cd5780639653a70411610081578063e65106f811610066578063e65106f8146103d2578063f2fde38b146103e5578063f8e1734c146103f857600080fd5b80639653a7041461037e57806398678a111461039157600080fd5b8063715018a6116100b2578063715018a6146103455780637401fccc1461034d5780638da5cb5b1461036057600080fd5b806354fd4d50146103125780636d26e5d01461033257600080fd5b806339e3f938116101245780633c782a52116101095780633c782a521461027a57806343ea4fa9146102df57806352d2871f146102f257600080fd5b806339e3f9381461024757806339e928a81461026757600080fd5b806327d12cd91161015557806327d12cd9146101b957806329460b0b146101d95780632fed39ae146101ec57600080fd5b80630223536e146101715780630f8355c014610186575b600080fd5b61018461017f366004612604565b61040b565b005b6101a6610194366004612677565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6101cc6101c7366004612692565b61041d565b6040516101b09190612744565b6101846101e7366004612757565b610454565b6102226101fa366004612677565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b0565b61025a6102553660046127ee565b610639565b6040516101b091906128e7565b6101846102753660046128fa565b6107db565b6102bf61028836600461295d565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101b0565b61025a6102ed3660046127ee565b610936565b6103056103003660046129a8565b610cf0565b6040516101b09190612a55565b6040805160038152600060208201526001918101919091526060016101b0565b610184610340366004612a68565b610da1565b610184610e7a565b6101cc61035b366004612692565b610e8e565b60005473ffffffffffffffffffffffffffffffffffffffff16610222565b61022261038c3660046127ee565b611088565b61022261039f3660046127ee565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b6101846103e0366004612692565b611103565b6101846103f3366004612a92565b611204565b610184610406366004612aaf565b6112bb565b610417848484846113bc565b50505050565b60008061042b858585610e8e565b600281111561043c5761043c6126de565b036104495750600061044d565b5060025b9392505050565b61045c6114d0565b60005b818110156105fb573683838381811061047a5761047a612b20565b905060200281019061048c9190612b4f565b905060ff61049d6020830183612b8d565b6104ae906040810190602001612bd2565b60ff16036104e8576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6104f76020830183612b8d565b610508906060810190604001612bd2565b60ff1603610542576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6105586020830183612b8d565b610566906020810190612bed565b67ffffffffffffffff16036105a7576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c56105b76020830183612b8d565b6105c090612dda565b611551565b6105f260006105d76020840184612677565b6105e46020850185612b8d565b6105ed90612dda565b6115a2565b5060010161045f565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b560828260405161062d929190612e98565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561075a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161072f575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156107c957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161079e575b50505050508152505090505b92915050565b6107e36114d0565b60005b81811015610904573683838381811061080157610801612b20565b9050604002019050600073ffffffffffffffffffffffffffffffffffffffff168160200160208101906108349190612a92565b73ffffffffffffffffffffffffffffffffffffffff1603610881576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108916040820160208301612a92565b600560006108a26020850185612677565b63ffffffff168152602081019190915260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055506001016107e6565b507f2a2676897ce6724d11fb8016f9bcdfe9fe564bc3524411d5df7914aac78aeeb3828260405161062d929190613037565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff16806109e657825467ffffffffffffffff168452610a05565b67ffffffffffffffff81811614610a055767ffffffffffffffff811684525b815468010000000000000000900460ff16610abb57825468010000000000000000900460ff1615610ab65782600101805480602002602001604051908101604052809291908181526020018280548015610a9557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a6a575b50505050506080850152825468010000000000000000900460ff1660208501525b610b59565b815468010000000000000000900460ff90811614610b595781600101805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b0d575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610c285782546901000000000000000000900460ff1615610c235782600201805480602002602001604051908101604052809291908181526020018280548015610beb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bc0575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610cde565b81546901000000000000000000900460ff90811614610cde5781600201805480602002602001604051908101604052809291908181526020018280548015610ca657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c7b575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610ce784611551565b50505092915050565b606060018203610d4157610d08838561ffff16611088565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152015b604051602081830303815290604052905061044d565b60028203610d6757610d57838561ffff16610936565b604051602001610d2b91906128e7565b6040517f961a995f000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610da96114d0565b6020811115610de4576040517fbcfcf59e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff821660009081526003602052604090205415610e2f576040517f831ad0ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600081815260036020908152604091829020849055815192835282018390527ee9ab3709e58edd0db46318d63673d8ae4681fa3e51d9f9dc07cde5109ff748910161062d565b610e826114d0565b610e8c6000611936565b565b6000610ebb84847f00000000000000000000000000000000000000000000000000000000000000006119ab565b6000610ec78585611a7e565b90506000610ee3610ed88787611a90565b63ffffffff16611ab3565b90506000610ef18787611b4b565b61ffff831660009081526003602052604081205491925090610f1d90610f178a8a611b6e565b90611b87565b84604051602001610f2f9291906130aa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527ffdc07c70000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fdc07c7090610fd190869085906004016130f4565b602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190613111565b67ffffffffffffffff168267ffffffffffffffff161161103957600294505050505061044d565b61106861104a858561ffff16610936565b898960405161105a92919061312e565b604051809103902088611c28565b1561107a57600194505050505061044d565b506000979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff86168452909152812054909116806110f95763ffffffff831660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff166110fb565b805b949350505050565b3660006111108585611d31565b9150915061113f82827f00000000000000000000000000000000000000000000000000000000000000006119ab565b600061114b8686611a7e565b9050600061115c610ed88888611a90565b9050600061116e838361ffff16610936565b905061119b81868660405161118492919061312e565b60405180910390206111968b8b611d4d565b611d77565b6111fa826111a98a8a611b6e565b856111b48c8c611b4b565b6111be8d8d611f26565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e9250611f36915050565b5050505050505050565b61120c6114d0565b73ffffffffffffffffffffffffffffffffffffffff81166112af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d98565b6112b881611936565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461132a576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113378561ffff166121e9565b6001830361135e5761135961ffff86168561135484860186612a92565b612230565b6113b5565b600283036113805761135961ffff86168561137b8486018661313e565b6122db565b6040517f961a995f00000000000000000000000000000000000000000000000000000000815260048101849052602401610d98565b5050505050565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906113ee908890889061312e565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab56916114c2918790879086908890613173565b60405180910390a150505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d98565b602081015160ff1615801561156b5750606081015160ff16155b156112b8576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806115bd5750602081015160ff16155b1561160457608081015151156115ff576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611683565b806020015160ff1681608001515114158061163f57506002611628600160ff613227565b6116329190613240565b60ff16816020015160ff16115b15611676576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116838160800151612324565b604081015160ff908116148061169e5750604081015160ff16155b156117245760a081015151156116e0576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161561171f576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb565b806040015160ff168160a001515114158061175f57506002611748600160ff613227565b6117529190613240565b60ff16816040015160ff16115b15611796576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806117b75750806040015160ff16816060015160ff16115b156117ee576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb8160a00151612324565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a010000000000000000000095909116949094029390931783556080840151805185949361191293908501920190612506565b5060a0820151805161192e916002840191602090910190612506565b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b605182146119e5576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016119f184846123be565b60ff1614611a2b576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16611a3c84846123e0565b63ffffffff1614611a79576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600061044d611a8d84846123f0565b90565b6000611aa0600d60098486613289565b611aa9916132b3565b60e01c9392505050565b600061ffff821115611b47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610d98565b5090565b6000611b5b600960018486613289565b611b64916132fb565b60c01c9392505050565b6000611b7e602d600d8486613289565b61044d91613341565b6060811580611b965750602082115b15611bcd576040517f59baef1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8167ffffffffffffffff811115611be657611be6612c0a565b6040519080825280601f01601f191660200182016040528015611c10576020820181803683370190505b506008909202610100039290921b6020820152919050565b602083015160009060ff1615611cab5760005b846020015160ff168160ff161015611c9357611c7d85608001518260ff1681518110611c6957611c69612b20565b602002602001015185858860000151612400565b611c8b57600091505061044d565b600101611c3b565b50836040015160ff16600003611cab5750600161044d565b606084015160005b856040015160ff168160ff161015611d2557611cf58660a001518260ff1681518110611ce157611ce1612b20565b602002602001015186868960000151612400565b15611d1d5781611d048161337d565b9250508160ff16600003611d1d5760019250505061044d565b600101611cb3565b50600095945050505050565b366000611d416051828587613289565b915091505b9250929050565b6000611d59838361248f565b604051611d6792919061312e565b6040518091039020905092915050565b611d82838383611c28565b611db8576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff1615611e705760005b836020015160ff168160ff161015611e6e57600083815260026020908152604080832085845290915281206080860151805191929160ff8516908110611e1057611e10612b20565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611dc8565b505b604083015160ff1615611a795760005b836040015160ff168160ff161015610417576000838152600260209081526040808320858452909152812060a0860151805191929160ff8516908110611ec857611ec8612b20565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611e80565b366000611d418360718187613289565b611f44848761ffff16611088565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa8576040517f7fb6be0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163b600003612045578373ffffffffffffffffffffffffffffffffffffffff168661ffff167feca5e9e3d49c3ee9d9362efa82baa91c668a7f032b3a403638ae65e273680136878686805190602001206040516120389392919092835267ffffffffffffffff919091166020830152604082015260600190565b60405180910390a361192e565b61ffff8616600090815260036020526040812054612064908790611b87565b856040516020016120769291906130aa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527fc2fa4813000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c2fa481390612120908a9085908a908a9089908b906004016133b8565b600060405180830381600087803b15801561213a57600080fd5b505af115801561214e573d6000803e3d6000fd5b5050604080516060808201835261ffff8c1680835260208084018d815267ffffffffffffffff8c8116868801908152875194855291519284019290925251169381019390935273ffffffffffffffffffffffffffffffffffffffff8a169083015292507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04915060800160405180910390a15050505050505050565b6121f28161249f565b6112b8576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610d98565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260046020908152604080832063ffffffff89168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001695871695861790558051938452908301919091528101919091527f2bef5fe6b6383925f8e9893d464521c5fcd4f9d4dc14d32d900849c5ae0af710906060015b60405180910390a1505050565b6122e68284836115a2565b6122f08284610936565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516122ce93929190613426565b6000805b8251811015611a7957600083828151811061234557612345612b20565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116123b4576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101612328565b60006123cd6001828486613289565b6123d691613461565b60f81c9392505050565b6000611aa06031602d8486613289565b6000611b7e605160318486613289565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff1693830193909352909161248557508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b366000611d418360518187613289565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061044d5750546a0100000000000000000000900460ff16151592915050565b828054828255906000526020600020908101928215612580579160200282015b8281111561258057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612526565b50611b479291505b80821115611b475760008155600101612588565b60008083601f8401126125ae57600080fd5b50813567ffffffffffffffff8111156125c657600080fd5b602083019150836020828501011115611d4657600080fd5b67ffffffffffffffff811681146112b857600080fd5b80356125ff816125de565b919050565b6000806000806060858703121561261a57600080fd5b843567ffffffffffffffff81111561263157600080fd5b61263d8782880161259c565b909550935050602085013591506040850135612658816125de565b939692955090935050565b803563ffffffff811681146125ff57600080fd5b60006020828403121561268957600080fd5b61044d82612663565b6000806000604084860312156126a757600080fd5b833567ffffffffffffffff8111156126be57600080fd5b6126ca8682870161259c565b909790965060209590950135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106112b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016127518361270d565b91905290565b6000806020838503121561276a57600080fd5b823567ffffffffffffffff8082111561278257600080fd5b818501915085601f83011261279657600080fd5b8135818111156127a557600080fd5b8660208260051b85010111156127ba57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b857600080fd5b6000806040838503121561280157600080fd5b823561280c816127cc565b915061281a60208401612663565b90509250929050565b60008151808452602080850194506020840160005b8381101561286a57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612838565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526128c560c0850182612823565b905060a083015184820360a08601526128de8282612823565b95945050505050565b60208152600061044d6020830184612875565b6000806020838503121561290d57600080fd5b823567ffffffffffffffff8082111561292557600080fd5b818501915085601f83011261293957600080fd5b81358181111561294857600080fd5b8660208260061b85010111156127ba57600080fd5b60008060006060848603121561297257600080fd5b8335925060208401359150604084013561298b816127cc565b809150509250925092565b803561ffff811681146125ff57600080fd5b6000806000606084860312156129bd57600080fd5b6129c684612996565b925060208401356129d6816127cc565b929592945050506040919091013590565b60005b83811015612a025781810151838201526020016129ea565b50506000910152565b60008151808452612a238160208601602086016129e7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044d6020830184612a0b565b60008060408385031215612a7b57600080fd5b612a8483612996565b946020939093013593505050565b600060208284031215612aa457600080fd5b81356110f9816127cc565b600080600080600060808688031215612ac757600080fd5b612ad086612996565b94506020860135612ae0816127cc565b935060408601359250606086013567ffffffffffffffff811115612b0357600080fd5b612b0f8882890161259c565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112612b8357600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612b8357600080fd5b803560ff811681146125ff57600080fd5b600060208284031215612be457600080fd5b61044d82612bc1565b600060208284031215612bff57600080fd5b81356110f9816125de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612c5c57612c5c612c0a565b60405290565b600082601f830112612c7357600080fd5b8135602067ffffffffffffffff80831115612c9057612c90612c0a565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715612cd357612cd3612c0a565b6040529384526020818701810194908101925087851115612cf357600080fd5b6020870191505b84821015612d1c578135612d0d816127cc565b83529183019190830190612cfa565b979650505050505050565b600060c08284031215612d3957600080fd5b612d41612c39565b9050612d4c826125f4565b8152612d5a60208301612bc1565b6020820152612d6b60408301612bc1565b6040820152612d7c60608301612bc1565b6060820152608082013567ffffffffffffffff80821115612d9c57600080fd5b612da885838601612c62565b608084015260a0840135915080821115612dc157600080fd5b50612dce84828501612c62565b60a08301525092915050565b60006107d53683612d27565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e1b57600080fd5b830160208101925035905067ffffffffffffffff811115612e3b57600080fd5b8060051b3603821315611d4657600080fd5b8183526000602080850194508260005b8581101561286a578135612e70816127cc565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612e5d565b60208082528181018390526000906040808401600586901b8501820187855b88811015613029577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112612f1957600080fd5b8b0163ffffffff612f2982612663565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41823603018112612f6057600080fd5b858901889052018035612f72816125de565b67ffffffffffffffff1685880152612f8b818901612bc1565b606060ff80831682890152612fa18a8501612bc1565b92506080818416818a0152612fb7838601612bc1565b935060a09250818416838a0152612fd081860186612de6565b60c08b81015294509150612feb905061010089018483612e4d565b925050612ffa81840184612de6565b93509050838783030160e0880152613013828483612e4d565b978a019796505050928701925050600101612eb7565b509098975050505050505050565b6020808252818101839052600090604080840186845b8781101561309d5763ffffffff61306383612663565b16835284820135613073816127cc565b73ffffffffffffffffffffffffffffffffffffffff1683860152918301919083019060010161304d565b5090979650505050505050565b600083516130bc8184602088016129e7565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b61ffff831681526040602082015260006110fb6040830184612a0b565b60006020828403121561312357600080fd5b81516110f9816125de565b8183823760009101908152919050565b60006020828403121561315057600080fd5b813567ffffffffffffffff81111561316757600080fd5b6110fb84828501612d27565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff82811682821603908111156107d5576107d56131f8565b600060ff83168061327a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b6000808585111561329957600080fd5b838611156132a657600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156132f35780818660040360031b1b83161692505b505092915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132f35760089490940360031b84901b1690921692915050565b803560208310156107d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600060ff821680613390576133906131f8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b61ffff8716815260c0602082015260006133d560c0830188612a0b565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526134198185612a0b565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006128de6060830184612875565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156132f35760019490940360031b84901b169092169291505056fea2646970667358221220119cffcfa2d7feed6efb59236446a1b4b1f46691fc2bd81b1b9cfbf8e69bcd9664736f6c63430008160033";
39517
+ static readonly bytecode = "0x60c06040523480156200001157600080fd5b506040516200361c3803806200361c8339810160408190526200003491620000b2565b6001600160a01b03821660805263ffffffff811660a0528181620000583362000062565b5050505062000104565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060408385031215620000c657600080fd5b82516001600160a01b0381168114620000de57600080fd5b602084015190925063ffffffff81168114620000f957600080fd5b809150509250929050565b60805160a0516134dd6200013f60003960008181610e97015261111b015260008181610f9a015281816112bd01526120e101526134dd6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806354fd4d50116100cd5780639653a70411610081578063e65106f811610066578063e65106f8146103d2578063f2fde38b146103e5578063f8e1734c146103f857600080fd5b80639653a7041461037e57806398678a111461039157600080fd5b8063715018a6116100b2578063715018a6146103455780637401fccc1461034d5780638da5cb5b1461036057600080fd5b806354fd4d50146103125780636d26e5d01461033257600080fd5b806339e3f938116101245780633c782a52116101095780633c782a521461027a57806343ea4fa9146102df57806352d2871f146102f257600080fd5b806339e3f9381461024757806339e928a81461026757600080fd5b806327d12cd91161015557806327d12cd9146101b957806329460b0b146101d95780632fed39ae146101ec57600080fd5b80630223536e146101715780630f8355c014610186575b600080fd5b61018461017f366004612604565b61040b565b005b6101a6610194366004612677565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b6101cc6101c7366004612692565b61041d565b6040516101b09190612744565b6101846101e7366004612757565b610454565b6102226101fa366004612677565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b0565b61025a6102553660046127ee565b610639565b6040516101b091906128e7565b6101846102753660046128fa565b6107db565b6102bf61028836600461295d565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff9091166020830152016101b0565b61025a6102ed3660046127ee565b610936565b6103056103003660046129a8565b610cf0565b6040516101b09190612a55565b6040805160038152600060208201526001918101919091526060016101b0565b610184610340366004612a68565b610da1565b610184610e7a565b6101cc61035b366004612692565b610e8e565b60005473ffffffffffffffffffffffffffffffffffffffff16610222565b61022261038c3660046127ee565b611088565b61022261039f3660046127ee565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b6101846103e0366004612692565b611103565b6101846103f3366004612a92565b611204565b610184610406366004612aaf565b6112bb565b610417848484846113bc565b50505050565b60008061042b858585610e8e565b600281111561043c5761043c6126de565b036104495750600061044d565b5060025b9392505050565b61045c6114d0565b60005b818110156105fb573683838381811061047a5761047a612b20565b905060200281019061048c9190612b4f565b905060ff61049d6020830183612b8d565b6104ae906040810190602001612bd2565b60ff16036104e8576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6104f76020830183612b8d565b610508906060810190604001612bd2565b60ff1603610542576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6105586020830183612b8d565b610566906020810190612bed565b67ffffffffffffffff16036105a7576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105c56105b76020830183612b8d565b6105c090612dda565b611551565b6105f260006105d76020840184612677565b6105e46020850185612b8d565b6105ed90612dda565b6115a2565b5060010161045f565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b560828260405161062d929190612e98565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561075a57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161072f575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156107c957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161079e575b50505050508152505090505b92915050565b6107e36114d0565b60005b81811015610904573683838381811061080157610801612b20565b9050604002019050600073ffffffffffffffffffffffffffffffffffffffff168160200160208101906108349190612a92565b73ffffffffffffffffffffffffffffffffffffffff1603610881576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108916040820160208301612a92565b600560006108a26020850185612677565b63ffffffff168152602081019190915260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055506001016107e6565b507f2a2676897ce6724d11fb8016f9bcdfe9fe564bc3524411d5df7914aac78aeeb3828260405161062d929190613037565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff16806109e657825467ffffffffffffffff168452610a05565b67ffffffffffffffff81811614610a055767ffffffffffffffff811684525b815468010000000000000000900460ff16610abb57825468010000000000000000900460ff1615610ab65782600101805480602002602001604051908101604052809291908181526020018280548015610a9557602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a6a575b50505050506080850152825468010000000000000000900460ff1660208501525b610b59565b815468010000000000000000900460ff90811614610b595781600101805480602002602001604051908101604052809291908181526020018280548015610b3857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b0d575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610c285782546901000000000000000000900460ff1615610c235782600201805480602002602001604051908101604052809291908181526020018280548015610beb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bc0575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610cde565b81546901000000000000000000900460ff90811614610cde5781600201805480602002602001604051908101604052809291908181526020018280548015610ca657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c7b575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610ce784611551565b50505092915050565b606060018203610d4157610d08838561ffff16611088565b6040805173ffffffffffffffffffffffffffffffffffffffff9092166020830152015b604051602081830303815290604052905061044d565b60028203610d6757610d57838561ffff16610936565b604051602001610d2b91906128e7565b6040517f961a995f000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b610da96114d0565b6020811115610de4576040517fbcfcf59e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff821660009081526003602052604090205415610e2f576040517f831ad0ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600081815260036020908152604091829020849055815192835282018390527ee9ab3709e58edd0db46318d63673d8ae4681fa3e51d9f9dc07cde5109ff748910161062d565b610e826114d0565b610e8c6000611936565b565b6000610ebb84847f00000000000000000000000000000000000000000000000000000000000000006119ab565b6000610ec78585611a7e565b90506000610ee3610ed88787611a90565b63ffffffff16611ab3565b90506000610ef18787611b4b565b61ffff831660009081526003602052604081205491925090610f1d90610f178a8a611b6e565b90611b87565b84604051602001610f2f9291906130aa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527ffdc07c70000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063fdc07c7090610fd190869085906004016130f4565b602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190613111565b67ffffffffffffffff168267ffffffffffffffff161161103957600294505050505061044d565b61106861104a858561ffff16610936565b898960405161105a92919061312e565b604051809103902088611c28565b1561107a57600194505050505061044d565b506000979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff86168452909152812054909116806110f95763ffffffff831660009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff166110fb565b805b949350505050565b3660006111108585611d31565b9150915061113f82827f00000000000000000000000000000000000000000000000000000000000000006119ab565b600061114b8686611a7e565b9050600061115c610ed88888611a90565b9050600061116e838361ffff16610936565b905061119b81868660405161118492919061312e565b60405180910390206111968b8b611d4d565b611d77565b6111fa826111a98a8a611b6e565b856111b48c8c611b4b565b6111be8d8d611f26565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e9250611f36915050565b5050505050505050565b61120c6114d0565b73ffffffffffffffffffffffffffffffffffffffff81166112af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d98565b6112b881611936565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461132a576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113378561ffff166121e9565b6001830361135e5761135961ffff86168561135484860186612a92565b612230565b6113b5565b600283036113805761135961ffff86168561137b8486018661313e565b6122db565b6040517f961a995f00000000000000000000000000000000000000000000000000000000815260048101849052602401610d98565b5050505050565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906113ee908890889061312e565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab56916114c2918790879086908890613173565b60405180910390a150505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d98565b602081015160ff1615801561156b5750606081015160ff16155b156112b8576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806115bd5750602081015160ff16155b1561160457608081015151156115ff576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611683565b806020015160ff1681608001515114158061163f57506002611628600160ff613227565b6116329190613240565b60ff16816020015160ff16115b15611676576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116838160800151612324565b604081015160ff908116148061169e5750604081015160ff16155b156117245760a081015151156116e0576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161561171f576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb565b806040015160ff168160a001515114158061175f57506002611748600160ff613227565b6117529190613240565b60ff16816040015160ff16115b15611796576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806117b75750806040015160ff16816060015160ff16115b156117ee576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fb8160a00151612324565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a010000000000000000000095909116949094029390931783556080840151805185949361191293908501920190612506565b5060a0820151805161192e916002840191602090910190612506565b505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b605182146119e5576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016119f184846123be565b60ff1614611a2b576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff16611a3c84846123e0565b63ffffffff1614611a79576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600061044d611a8d84846123f0565b90565b6000611aa0600d60098486613289565b611aa9916132b3565b60e01c9392505050565b600061ffff821115611b47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610d98565b5090565b6000611b5b600960018486613289565b611b64916132fb565b60c01c9392505050565b6000611b7e602d600d8486613289565b61044d91613341565b6060811580611b965750602082115b15611bcd576040517f59baef1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8167ffffffffffffffff811115611be657611be6612c0a565b6040519080825280601f01601f191660200182016040528015611c10576020820181803683370190505b506008909202610100039290921b6020820152919050565b602083015160009060ff1615611cab5760005b846020015160ff168160ff161015611c9357611c7d85608001518260ff1681518110611c6957611c69612b20565b602002602001015185858860000151612400565b611c8b57600091505061044d565b600101611c3b565b50836040015160ff16600003611cab5750600161044d565b606084015160005b856040015160ff168160ff161015611d2557611cf58660a001518260ff1681518110611ce157611ce1612b20565b602002602001015186868960000151612400565b15611d1d5781611d048161337d565b9250508160ff16600003611d1d5760019250505061044d565b600101611cb3565b50600095945050505050565b366000611d416051828587613289565b915091505b9250929050565b6000611d59838361248f565b604051611d6792919061312e565b6040518091039020905092915050565b611d82838383611c28565b611db8576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff1615611e705760005b836020015160ff168160ff161015611e6e57600083815260026020908152604080832085845290915281206080860151805191929160ff8516908110611e1057611e10612b20565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611dc8565b505b604083015160ff1615611a795760005b836040015160ff168160ff161015610417576000838152600260209081526040808320858452909152812060a0860151805191929160ff8516908110611ec857611ec8612b20565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611e80565b366000611d418360718187613289565b611f44848761ffff16611088565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fa8576040517f7fb6be0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff163b600003612045578373ffffffffffffffffffffffffffffffffffffffff168661ffff167feca5e9e3d49c3ee9d9362efa82baa91c668a7f032b3a403638ae65e273680136878686805190602001206040516120389392919092835267ffffffffffffffff919091166020830152604082015260600190565b60405180910390a361192e565b61ffff8616600090815260036020526040812054612064908790611b87565b856040516020016120769291906130aa565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527fc2fa4813000000000000000000000000000000000000000000000000000000008252915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063c2fa481390612120908a9085908a908a9089908b906004016133b8565b600060405180830381600087803b15801561213a57600080fd5b505af115801561214e573d6000803e3d6000fd5b5050604080516060808201835261ffff8c1680835260208084018d815267ffffffffffffffff8c8116868801908152875194855291519284019290925251169381019390935273ffffffffffffffffffffffffffffffffffffffff8a169083015292507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04915060800160405180910390a15050505050505050565b6121f28161249f565b6112b8576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610d98565b73ffffffffffffffffffffffffffffffffffffffff828116600081815260046020908152604080832063ffffffff89168085529083529281902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001695871695861790558051938452908301919091528101919091527f2bef5fe6b6383925f8e9893d464521c5fcd4f9d4dc14d32d900849c5ae0af710906060015b60405180910390a1505050565b6122e68284836115a2565b6122f08284610936565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516122ce93929190613426565b6000805b8251811015611a7957600083828151811061234557612345612b20565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116123b4576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101612328565b60006123cd6001828486613289565b6123d691613461565b60f81c9392505050565b6000611aa06031602d8486613289565b6000611b7e605160318486613289565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff1693830193909352909161248557508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b366000611d418360518187613289565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061044d5750546a0100000000000000000000900460ff16151592915050565b828054828255906000526020600020908101928215612580579160200282015b8281111561258057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612526565b50611b479291505b80821115611b475760008155600101612588565b60008083601f8401126125ae57600080fd5b50813567ffffffffffffffff8111156125c657600080fd5b602083019150836020828501011115611d4657600080fd5b67ffffffffffffffff811681146112b857600080fd5b80356125ff816125de565b919050565b6000806000806060858703121561261a57600080fd5b843567ffffffffffffffff81111561263157600080fd5b61263d8782880161259c565b909550935050602085013591506040850135612658816125de565b939692955090935050565b803563ffffffff811681146125ff57600080fd5b60006020828403121561268957600080fd5b61044d82612663565b6000806000604084860312156126a757600080fd5b833567ffffffffffffffff8111156126be57600080fd5b6126ca8682870161259c565b909790965060209590950135949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106112b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016127518361270d565b91905290565b6000806020838503121561276a57600080fd5b823567ffffffffffffffff8082111561278257600080fd5b818501915085601f83011261279657600080fd5b8135818111156127a557600080fd5b8660208260051b85010111156127ba57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146112b857600080fd5b6000806040838503121561280157600080fd5b823561280c816127cc565b915061281a60208401612663565b90509250929050565b60008151808452602080850194506020840160005b8381101561286a57815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612838565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526128c560c0850182612823565b905060a083015184820360a08601526128de8282612823565b95945050505050565b60208152600061044d6020830184612875565b6000806020838503121561290d57600080fd5b823567ffffffffffffffff8082111561292557600080fd5b818501915085601f83011261293957600080fd5b81358181111561294857600080fd5b8660208260061b85010111156127ba57600080fd5b60008060006060848603121561297257600080fd5b8335925060208401359150604084013561298b816127cc565b809150509250925092565b803561ffff811681146125ff57600080fd5b6000806000606084860312156129bd57600080fd5b6129c684612996565b925060208401356129d6816127cc565b929592945050506040919091013590565b60005b83811015612a025781810151838201526020016129ea565b50506000910152565b60008151808452612a238160208601602086016129e7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061044d6020830184612a0b565b60008060408385031215612a7b57600080fd5b612a8483612996565b946020939093013593505050565b600060208284031215612aa457600080fd5b81356110f9816127cc565b600080600080600060808688031215612ac757600080fd5b612ad086612996565b94506020860135612ae0816127cc565b935060408601359250606086013567ffffffffffffffff811115612b0357600080fd5b612b0f8882890161259c565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112612b8357600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612b8357600080fd5b803560ff811681146125ff57600080fd5b600060208284031215612be457600080fd5b61044d82612bc1565b600060208284031215612bff57600080fd5b81356110f9816125de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612c5c57612c5c612c0a565b60405290565b600082601f830112612c7357600080fd5b8135602067ffffffffffffffff80831115612c9057612c90612c0a565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715612cd357612cd3612c0a565b6040529384526020818701810194908101925087851115612cf357600080fd5b6020870191505b84821015612d1c578135612d0d816127cc565b83529183019190830190612cfa565b979650505050505050565b600060c08284031215612d3957600080fd5b612d41612c39565b9050612d4c826125f4565b8152612d5a60208301612bc1565b6020820152612d6b60408301612bc1565b6040820152612d7c60608301612bc1565b6060820152608082013567ffffffffffffffff80821115612d9c57600080fd5b612da885838601612c62565b608084015260a0840135915080821115612dc157600080fd5b50612dce84828501612c62565b60a08301525092915050565b60006107d53683612d27565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e1b57600080fd5b830160208101925035905067ffffffffffffffff811115612e3b57600080fd5b8060051b3603821315611d4657600080fd5b8183526000602080850194508260005b8581101561286a578135612e70816127cc565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612e5d565b60208082528181018390526000906040808401600586901b8501820187855b88811015613029577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112612f1957600080fd5b8b0163ffffffff612f2982612663565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41823603018112612f6057600080fd5b858901889052018035612f72816125de565b67ffffffffffffffff1685880152612f8b818901612bc1565b606060ff80831682890152612fa18a8501612bc1565b92506080818416818a0152612fb7838601612bc1565b935060a09250818416838a0152612fd081860186612de6565b60c08b81015294509150612feb905061010089018483612e4d565b925050612ffa81840184612de6565b93509050838783030160e0880152613013828483612e4d565b978a019796505050928701925050600101612eb7565b509098975050505050505050565b6020808252818101839052600090604080840186845b8781101561309d5763ffffffff61306383612663565b16835284820135613073816127cc565b73ffffffffffffffffffffffffffffffffffffffff1683860152918301919083019060010161304d565b5090979650505050505050565b600083516130bc8184602088016129e7565b60609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190920190815260140192915050565b61ffff831681526040602082015260006110fb6040830184612a0b565b60006020828403121561312357600080fd5b81516110f9816125de565b8183823760009101908152919050565b60006020828403121561315057600080fd5b813567ffffffffffffffff81111561316757600080fd5b6110fb84828501612d27565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60ff82811682821603908111156107d5576107d56131f8565b600060ff83168061327a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b6000808585111561329957600080fd5b838611156132a657600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156132f35780818660040360031b1b83161692505b505092915050565b7fffffffffffffffff00000000000000000000000000000000000000000000000081358181169160088510156132f35760089490940360031b84901b1690921692915050565b803560208310156107d5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600060ff821680613390576133906131f8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b61ffff8716815260c0602082015260006133d560c0830188612a0b565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a08401526134198185612a0b565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006128de6060830184612875565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156132f35760019490940360031b84901b169092169291505056fea264697066735822122086ec5f55fe6d3d4d99d270af1e5809a3d63ed427ff2f4c5e4c6eee396243ab6e64736f6c63430008160033";
39504
39518
  static readonly abi: readonly [{
39505
39519
  readonly inputs: readonly [{
39506
39520
  readonly internalType: "address";
@@ -40879,7 +40893,7 @@ declare class SendUln301__factory extends ContractFactory {
40879
40893
  }): TransactionRequest;
40880
40894
  attach(address: string): SendUln301;
40881
40895
  connect(signer: Signer): SendUln301__factory;
40882
- static readonly bytecode = "0x6101206040523480156200001257600080fd5b5060405162005a3c38038062005a3c8339810160408190526200003591620000ff565b6001600160a01b03861660805263ffffffff821660a05285858585858585828686620000613362000092565b60c09190915260025550506001600160a01b0392831660e05290911661010052506200017898505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000fa57600080fd5b919050565b60008060008060008060c087890312156200011957600080fd5b6200012487620000e2565b955060208701519450604087015193506200014260608801620000e2565b9250608087015163ffffffff811681146200015c57600080fd5b91506200016c60a08801620000e2565b90509295509295509295565b60805160a05160c05160e0516101005161585c620001e0600039600081816104a50152611fe90152600081816101ad0152612668015260008181611de801526125580152600081816127340152612802015260008181610e740152611568015261585c6000f3fe6080604052600436106101965760003560e01c80636750cd4c116100e1578063c28e0eed1161008a578063f2fde38b11610064578063f2fde38b14610572578063f8e1734c14610592578063faaebd21146105b2578063fd9be522146105df57600080fd5b8063c28e0eed14610512578063d15b0d4914610532578063f0f442601461055257600080fd5b806389b69dec116100bb57806389b69dec146104935780638da5cb5b146104c7578063c14c4349146104f257600080fd5b80636750cd4c1461042e5780636d26e5d01461045e578063715018a61461047e57600080fd5b806343ea4fa91161014357806352d2871f1161011d57806352d2871f146103a757806354fd4d50146103d457806361d027b31461040157600080fd5b806343ea4fa9146102e55780634d3a0f7c146103055780634d9632001461031857600080fd5b806329460b0b1161017457806329460b0b1461026157806339e3f9381461028357806340a7bb10146102b057600080fd5b806302bd97431461019b5780630f8355c0146101f9578063188183f414610234575b600080fd5b3480156101a757600080fd5b506101cf7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561020557600080fd5b506102266102143660046144a7565b60066020526000908152604090205481565b6040519081526020016101f0565b34801561024057600080fd5b5061025461024f3660046144f6565b6105ff565b6040516101f0919061452f565b34801561026d57600080fd5b5061028161027c366004614562565b61070c565b005b34801561028f57600080fd5b506102a361029e3660046144f6565b6108f1565b6040516101f0919061469b565b3480156102bc57600080fd5b506102d06102cb366004614702565b610a93565b604080519283526020830191909152016101f0565b3480156102f157600080fd5b506102a36103003660046144f6565b610ab8565b6102816103133660046147d0565b610e72565b34801561032457600080fd5b506103766103333660046144f6565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101f0565b3480156103b357600080fd5b506103c76103c23660046148c4565b611080565b6040516101f09190614971565b3480156103e057600080fd5b506040805160038152600060208201526001918101919091526060016101f0565b34801561040d57600080fd5b506003546101cf9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561043a57600080fd5b5061044e6104493660046144a7565b611125565b60405190151581526020016101f0565b34801561046a57600080fd5b50610281610479366004614984565b611130565b34801561048a57600080fd5b50610281611209565b34801561049f57600080fd5b506101cf7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101cf565b3480156104fe57600080fd5b5061028161050d3660046149ae565b61121d565b34801561051e57600080fd5b5061028161052d366004614a11565b611395565b34801561053e57600080fd5b5061028161054d366004614a2e565b611417565b34801561055e57600080fd5b5061028161056d366004614a11565b61149e565b34801561057e57600080fd5b5061028161058d366004614a11565b6114b2565b34801561059e57600080fd5b506102816105ad366004614a47565b611566565b3480156105be57600080fd5b506102266105cd366004614a11565b60056020526000908152604090205481565b3480156105eb57600080fd5b506102816105fa366004614ab8565b611667565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361069057825463ffffffff16610692565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff16806106e4578354640100000000900473ffffffffffffffffffffffffffffffffffffffff166106e6565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b6107146116cd565b60005b818110156108b3573683838381811061073257610732614ad6565b90506020028101906107449190614b05565b905060ff6107556020830183614b43565b610766906040810190602001614b88565b60ff16036107a0576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6107af6020830183614b43565b6107c0906060810190604001614b88565b60ff16036107fa576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6108106020830183614b43565b61081e906020810190614ba3565b67ffffffffffffffff160361085f576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087d61086f6020830183614b43565b61087890614d90565b61174e565b6108aa600061088f60208401846144a7565b61089c6020850185614b43565b6108a590614d90565b61179f565b50600101610717565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108e5929190614e4e565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a01000000000000000000009091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610a1257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109e7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a8157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a56575b50505050508152505090505b92915050565b600080610aa88861ffff8b1688888888611b33565b9150915097509795505050505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b6857825467ffffffffffffffff168452610b87565b67ffffffffffffffff81811614610b875767ffffffffffffffff811684525b815468010000000000000000900460ff16610c3d57825468010000000000000000900460ff1615610c385782600101805480602002602001604051908101604052809291908181526020018280548015610c1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bec575b50505050506080850152825468010000000000000000900460ff1660208501525b610cdb565b815468010000000000000000900460ff90811614610cdb5781600101805480602002602001604051908101604052809291908181526020018280548015610cba57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c8f575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610daa5782546901000000000000000000900460ff1615610da55782600201805480602002602001604051908101604052809291908181526020018280548015610d6d57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d42575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e60565b81546901000000000000000000900460ff90811614610e605781600201805480602002602001604051908101604052809291908181526020018280548015610e2857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dfd575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e698461174e565b50505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610ee1576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ef48d8c8c8c8c8c8a8a611c39565b909250905061ffff8b168d600073ffffffffffffffffffffffffffffffffffffffff881615801590610f3d575060075473ffffffffffffffffffffffffffffffffffffffff1615155b9050600080610f4e84868886611ce6565b9092509050610f5d828761501f565b955085341015610f99576040517f78f38f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fa58734615032565b90508015610fb757610fb78c82611e75565b811561102c578473ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f64316b4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c8583611f80565b7f3dc6f2ede34d1db05729bbb76e5efd17ec1bc83f98f665e7fba0596dca438b96888b8b8a8660405161106395949392919061508e565b60405180910390a150505050505050505050505050505050505050565b6060600182036110be57611098838561ffff166105ff565b6040516020016110a8919061452f565b604051602081830303815290604052905061111e565b600282036110e4576110d4838561ffff16610ab8565b6040516020016110a8919061469b565b6040517f961a995f000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b9392505050565b6000610a8d82612043565b6111386116cd565b6020811115611173576040517fbcfcf59e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600090815260066020526040902054156111be576040517f831ad0ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600081815260066020908152604091829020849055815192835282018390527ee9ab3709e58edd0db46318d63673d8ae4681fa3e51d9f9dc07cde5109ff74891016108e5565b6112116116cd565b61121b60006120aa565b565b6112256116cd565b60005b81811015611363573683838381811061124357611243614ad6565b60609081029290920192506000916112619150830160408401614a11565b73ffffffffffffffffffffffffffffffffffffffff16036112ae576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112be60408201602083016144a7565b63ffffffff166000036112fd576040517f8e2f797b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec9061133883856144a7565b63ffffffff168152602081019190915260400160002061135882826150c9565b505050600101611228565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de82826040516108e5929190615161565b61139d6116cd565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396906020015b60405180910390a150565b61141f6116cd565b600254811115611469576002546040517f7c83fcf0000000000000000000000000000000000000000000000000000000008152611115918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b78429060200161140c565b6114a66116cd565b6114af8161211f565b50565b6114ba6116cd565b73ffffffffffffffffffffffffffffffffffffffff811661155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611115565b6114af816120aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146115d5576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115e28561ffff16612192565b600183036116095761160461ffff8616856115ff848601866151ee565b6121d9565b611660565b6002830361162b5761160461ffff8616856116268486018661524d565b612293565b6040517f961a995f00000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b5050505050565b611670816122dc565b61167a8282611e75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff841660208201529081018290527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a6669883906060016108e5565b60005473ffffffffffffffffffffffffffffffffffffffff16331461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611115565b602081015160ff161580156117685750606081015160ff16155b156114af576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806117ba5750602081015160ff16155b1561180157608081015151156117fc576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611880565b806020015160ff1681608001515114158061183c57506002611825600160ff615282565b61182f919061529b565b60ff16816020015160ff16115b15611873576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118808160800151612346565b604081015160ff908116148061189b5750604081015160ff16155b156119215760a081015151156118dd576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161561191c576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f8565b806040015160ff168160a001515114158061195c57506002611945600160ff615282565b61194f919061529b565b60ff16816040015160ff16115b15611993576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806119b45750806040015160ff16816060015160ff16115b156119eb576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f88160a00151612346565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611b0f939085019201906143ff565b5060a08201518051611b2b9160028401916020909101906143ff565b505050505050565b600080600080611b4386866123e0565b915091506000611b548b8b846123f9565b90506000611b628c8c6105ff565b9050611b788a826000015163ffffffff1661240e565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b8152600401611bbb94939291906152e4565b602060405180830381865afa158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061532f565b611c06908361501f565b9150600080611c178e8e868e612456565b9092509050611c26828561501f565b9e909d509b505050505050505050505050565b6060600080611c4c8b8b8b8b8b8b61259a565b9050600080611c5b87876123e0565b915091506000611c6f8e8e61ffff166105ff565b60c085015151815191925090611c8c90829063ffffffff1661240e565b611ca582602001518660600151876040015184886128ab565b611caf908761501f565b9550600080611cbe87866129e4565b9092509050611ccd828961501f565b9750809850505050505050509850989650505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615611e6c5760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c5486000000000000000000000000000000000000000000000000000000001790526003549192506000918291611e109173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908490876129ff565b91509150611e2087878484612ab0565b90955093508415611e685760035473ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604081208054879290611e6290849061501f565b90915550505b5050505b94509492505050565b73ffffffffffffffffffffffffffffffffffffffff8216611ec2576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611f1c576040519150601f19603f3d011682016040523d82523d6000602084013e611f21565b606091505b5050905080611f7b576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401611115565b505050565b6007546003546040517f7da56b4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528483166024820152604481018490526064810184905290821660848201527f000000000000000000000000000000000000000000000000000000000000000090911690637da56b4b9060a401600060405180830381600087803b15801561202f57600080fd5b505af1158015611b2b573d6000803e3d6000fd5b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061111e5750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161140c565b61219b81612043565b6114af576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401611115565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc8059061228690849086908590615348565b60405180910390a1505050565b61229e82848361179f565b6122a88284610ab8565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f5081828483604051612286939291906153a4565b3360009081526005602052604090205480821115612330576040517f7c83fcf00000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611115565b3360009081526005602052604090209190039055565b6000805b8251811015611f7b57600083828151811061236757612367614ad6565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116123d6576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915060010161234a565b6060806123ed8484612b2b565b915091505b9250929050565b6000612406848484612c18565b949350505050565b80821115612452576040517ff001cc650000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611115565b5050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615611e6c5760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd424422100000000000000000000000000000000000000000000000000000000179052600354919250600091829161257e9173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086612c92565b9150915061258e87878484612ab0565b94509450505050611e6c565b6040805160e0810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c084015261ffff891682526006905291822054909181900361261c576040517f20db826700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61262888878784612d3f565b6040517f6fe7b67300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636fe7b673906126a3908b908d908c908c906004016153df565b6020604051808303816000875af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e69190615419565b905060006126fe6126f984838a8c615436565b612dff565b6040805160c085901b7fffffffffffffffff000000000000000000000000000000000000000000000000166020808301919091527f000000000000000000000000000000000000000000000000000000000000000060e090811b7fffffffff0000000000000000000000000000000000000000000000000000000016602884015273ffffffffffffffffffffffffffffffffffffffff8f16602c8401528d901b7dffff0000000000000000000000000000000000000000000000000000000016604c830152605080830185905283518084039091018152607090920190925280519101209091506040518060e001604052808467ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b61ffff1663ffffffff16815260200183815260200182815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509b9a5050505050505050505050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a42906129069088908890889088906004016152e4565b6020604051808303816000875af1158015612925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612949919061532f565b9050801561298c5773ffffffffffffffffffffffffffffffffffffffff86166000908152600560205260408120805483929061298690849061501f565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b600060606129f460058585612e59565b909590945092505050565b60006060863b808303612a2657604080516000808252602082019092529250925050612aa6565b60008060008761ffff1667ffffffffffffffff811115612a4857612a48614bc0565b6040519080825280601f01601f191660200182016040528015612a72576020820181803683370190505b509050600080885160208a018c8f8ff191503d925087831115612a93578792505b828152826000602083013e909450925050505b9550959350505050565b600080831580612ac1575082516020115b15612ad157506000905080611e6c565b600083806020019051810190612ae7919061532f565b90508515612af757809150612b21565b60006002548811612b0a57600254612b0c565b875b9050808211612b1b5781612b1d565b805b9350505b5094509492505050565b606080600080612b3b8686612fb5565b915091508051600003612b9357604080516000808252602082019092528391612b87565b604080518082019091526000815260606020820152815260200190600190039081612b5f5790505b509350935050506123f2565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612baa5790505090506040518060400160405280600260ff1681526020018381525081600081518110612c0057612c00614ad6565b60209081029190910101529196919550909350505050565b600080612c258585610ab8565b905060008351600014612c565783600081518110612c4557612c45614ad6565b602002602001015160200151612c67565b604051806020016040528060008152505b9050600080612c75836131f6565b91509150612c8684888a858561349a565b98975050505050505050565b60006060853b808303612cb957604080516000808252602082019092529250925050611e6c565b60008060008761ffff1667ffffffffffffffff811115612cdb57612cdb614bc0565b6040519080825280601f01601f191660200182016040528015612d05576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115612d25578792505b828152826000602083013e90999098509650505050505050565b612d4a81601461501f565b8214612d82576040517f20db826700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612d98612d9384848188615436565b613658565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020821115612e3c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e468284615460565b6020929092036008029190911c92915050565b600060606000612e68856136a8565b90506000612e758661378e565b805160208201206060880151604089015192935090916000612e978284610ab8565b905060008951600014612ec85789600081518110612eb757612eb7614ad6565b602002602001015160200151612ed9565b604051806020016040528060008152505b90506060612f398d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815250856137ab565b604051919b509150612f51908990899060200161549c565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612f9d939291906154cb565b60405180910390a15050505050505050935093915050565b6060806002831015612ff6576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260006004820152602401611115565b60006130056002828688615436565b61300e91615529565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd82016131df578060005b8683101561316b57600061305960018501858a8c615436565b61306291615571565b60f81c905060008190036130a5576040517fe3faa65500000000000000000000000000000000000000000000000000000000815260006004820152602401611115565b8160ff166000036130b8578091506130f5565b8160ff168160ff16146130f5573660006130d486868c8e615436565b915091506130e58989868585613a97565b9099509750859450919250829150505b600184019360009061310c90600301868b8d615436565b61311591615529565b60f01c90506000819003613158576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101869052602401611115565b8060020161ffff16850194505050613040565b8287146131a7576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b60028711156131d8573660006131bf85858b8d615436565b915091506131d08888858585613a97565b909850965050505b50506131ed565b6131ea828787613c0c565b93505b50509250929050565b606080825160000361320757915091565b600061321284613e8b565b90508060ff166001036132c45760408051600180825281830190925290816020015b6060815260200190600190039081613234579050509250838360008151811061325f5761325f614ad6565b602090810291909101015260408051600180825281830190925290816020016020820280368337019050509150613297846003613fb0565b826000815181106132aa576132aa614ad6565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff8111156132e0576132e0614bc0565b604051908082528060200260200182016040528015613309578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561332857613328614bc0565b60405190808252806020026020018201604052801561335b57816020015b60608152602001906001900390816133465790505b50925060008060ff5b865183101561340f57600190920191600061337f8885614030565b60029490940193905060006133948986613fb0565b90508260ff1660ff036133a957809250613400565b8260ff168160ff1614613400577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006133e88b87846140b0565b90506133f68a8a878461422a565b5093909301929150815b5061ffff169290920191613364565b818303600061341f8985846140b0565b905061342d8888858461422a565b60005b8660ff168160ff16101561348e57878160ff168151811061345357613453614ad6565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff169052600101613430565b50505050505050915091565b600080866040015187602001516134b191906155b7565b905060005b8160ff168160ff16101561364d576000886020015160ff168260ff161061350b5760a089015160208a01516134eb9084615282565b60ff16815181106134fe576134fe614ad6565b602002602001015161352d565b88608001518260ff168151811061352457613524614ad6565b60200260200101515b60408051602081019091526000808252919250905b865181101561359a578360ff1687828151811061356157613561614ad6565b602002602001015160ff16036135925787818151811061358357613583614ad6565b6020026020010151915061359a565b600101613542565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac916135f3918d918d9087906004016155d0565b602060405180830381865afa158015613610573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613634919061532f565b61363e908661501f565b945050508060010190506134b6565b505095945050505050565b600060148214613694576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61369e828461561b565b60601c9392505050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c00151604051602001613778929190615661565b600060606000806137bb856131f6565b915091506000876040015188602001516137d591906155b7565b90508060ff1667ffffffffffffffff8111156137f3576137f3614bc0565b60405190808252806020026020018201604052801561381c578160200160208202803683370190505b50935060005b8160ff168160ff161015613a8a576000896020015160ff168260ff16106138775760a08a015160208b01516138579084615282565b60ff168151811061386a5761386a614ad6565b6020026020010151613899565b89608001518260ff168151811061389057613890614ad6565b60200260200101515b60408051602081019091526000808252919250905b8551811015613906578360ff168682815181106138cd576138cd614ad6565b602002602001015160ff16036138fe578681815181106138ef576138ef614ad6565b60200260200101519150613906565b6001016138ae565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d79061395b908d908590600401615687565b6020604051808303816000875af115801561397a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e919061532f565b878460ff16815181106139b3576139b3614ad6565b6020026020010181815250506000878460ff16815181106139d6576139d6614ad6565b60200260200101511115613a8057868360ff16815181106139f9576139f9614ad6565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a4e919061501f565b92505081905550868360ff1681518110613a6a57613a6a614ad6565b602002602001015188613a7d919061501f565b97505b5050600101613822565b5050505094509492505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613b3257865115613af457868484604051602001613ae093929190615705565b604051602081830303815290604052613b2b565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613c01565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613bca57855115613b8c57858484604051602001613b7893929190615705565b604051602081830303815290604052613bc3565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613c01565b6040517fe3faa65500000000000000000000000000000000000000000000000000000000815260ff86166004820152602401611115565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613d325760228214613c73576040517f9bebe0e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613c94613c86602260028688615436565b613c8f91615460565b614359565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b16602482015290915060340160405160208183030381529060405291505061111e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613e5357604282111580613d6d5750606282115b15613da4576040517f2b2e8c3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613db7613c86602260028688615436565b90506000613dcc613c86604260228789615436565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613e00866042818a615436565b613e0991615460565b60405160086020938403029190911c9250613e3a916001916011918391889183916031916002918b918b910161572d565b604051602081830303815290604052935050505061111e565b6040517f51458e6f00000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401611115565b600080805b8351821015613f6c576001909101906000613eab8584614030565b905060028301925060028161ffff161015613ef5576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b6000613f018685613fb0565b90508060ff1660ff03613f40576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b8316613f5d5760019485019460ff82161b831792505b5061ffff169190910190613e90565b83518214613fa9576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101839052602401611115565b5050919050565b6000613fbd82600161501f565b83511015614027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401611115565b50016001015190565b600061403d82600261501f565b835110156140a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401611115565b50016002015190565b6060816140be81601f61501f565b1015614126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401611115565b614130828461501f565b8451101561419a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401611115565b6060821580156141b95760405191506000825260208201604052614221565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141f25780518352602092830192016141da565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614267576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006142748360016155b7565b905060005b8451811015611b2b57600085828151811061429657614296614ad6565b602002602001015190508060ff168360ff160361430b578682815181106142bf576142bf614ad6565b6020026020010151846040516020016142d992919061549c565b6040516020818303038152906040528783815181106142fa576142fa614ad6565b602002602001018190525050611b2b565b8060ff16600003614350578286838151811061432957614329614ad6565b602002602001019060ff16908160ff1681525050838783815181106142fa576142fa614ad6565b50600101614279565b60006fffffffffffffffffffffffffffffffff8211156143fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401611115565b5090565b828054828255906000526020600020908101928215614479579160200282015b8281111561447957825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061441f565b506143fb9291505b808211156143fb5760008155600101614481565b63ffffffff811681146114af57600080fd5b6000602082840312156144b957600080fd5b813561111e81614495565b73ffffffffffffffffffffffffffffffffffffffff811681146114af57600080fd5b80356144f1816144c4565b919050565b6000806040838503121561450957600080fd5b8235614514816144c4565b9150602083013561452481614495565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff169082015260408101610a8d565b6000806020838503121561457557600080fd5b823567ffffffffffffffff8082111561458d57600080fd5b818501915085601f8301126145a157600080fd5b8135818111156145b057600080fd5b8660208260051b85010111156145c557600080fd5b60209290920196919550909350505050565b60008151808452602080850194506020840160005b8381101561461e57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016145ec565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261467960c08501826145d7565b905060a083015184820360a086015261469282826145d7565b95945050505050565b60208152600061111e6020830184614629565b803561ffff811681146144f157600080fd5b60008083601f8401126146d257600080fd5b50813567ffffffffffffffff8111156146ea57600080fd5b6020830191508360208285010111156123f257600080fd5b600080600080600080600060a0888a03121561471d57600080fd5b614726886146ae565b96506020880135614736816144c4565b9550604088013567ffffffffffffffff8082111561475357600080fd5b61475f8b838c016146c0565b909750955060608a01359150811515821461477957600080fd5b9093506080890135908082111561478f57600080fd5b5061479c8a828b016146c0565b989b979a50959850939692959293505050565b67ffffffffffffffff811681146114af57600080fd5b80356144f1816147af565b60008060008060008060008060008060006101008c8e0312156147f257600080fd5b6147fb8c6144e6565b9a5061480960208d016147c5565b995061481760408d016146ae565b985067ffffffffffffffff8060608e0135111561483357600080fd5b6148438e60608f01358f016146c0565b909950975060808d013581101561485957600080fd5b6148698e60808f01358f016146c0565b909750955061487a60a08e016144e6565b945061488860c08e016144e6565b93508060e08e0135111561489b57600080fd5b506148ac8d60e08e01358e016146c0565b81935080925050509295989b509295989b9093969950565b6000806000606084860312156148d957600080fd5b6148e2846146ae565b925060208401356148f2816144c4565b929592945050506040919091013590565b60005b8381101561491e578181015183820152602001614906565b50506000910152565b6000815180845261493f816020860160208601614903565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061111e6020830184614927565b6000806040838503121561499757600080fd5b6149a0836146ae565b946020939093013593505050565b600080602083850312156149c157600080fd5b823567ffffffffffffffff808211156149d957600080fd5b818501915085601f8301126149ed57600080fd5b8135818111156149fc57600080fd5b8660206060830285010111156145c557600080fd5b600060208284031215614a2357600080fd5b813561111e816144c4565b600060208284031215614a4057600080fd5b5035919050565b600080600080600060808688031215614a5f57600080fd5b614a68866146ae565b94506020860135614a78816144c4565b935060408601359250606086013567ffffffffffffffff811115614a9b57600080fd5b614aa7888289016146c0565b969995985093965092949392505050565b60008060408385031215614acb57600080fd5b82356149a0816144c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614b3957600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614b3957600080fd5b803560ff811681146144f157600080fd5b600060208284031215614b9a57600080fd5b61111e82614b77565b600060208284031215614bb557600080fd5b813561111e816147af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614c1257614c12614bc0565b60405290565b600082601f830112614c2957600080fd5b8135602067ffffffffffffffff80831115614c4657614c46614bc0565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715614c8957614c89614bc0565b6040529384526020818701810194908101925087851115614ca957600080fd5b6020870191505b84821015614cd2578135614cc3816144c4565b83529183019190830190614cb0565b979650505050505050565b600060c08284031215614cef57600080fd5b614cf7614bef565b9050614d02826147c5565b8152614d1060208301614b77565b6020820152614d2160408301614b77565b6040820152614d3260608301614b77565b6060820152608082013567ffffffffffffffff80821115614d5257600080fd5b614d5e85838601614c18565b608084015260a0840135915080821115614d7757600080fd5b50614d8484828501614c18565b60a08301525092915050565b6000610a8d3683614cdd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dd157600080fd5b830160208101925035905067ffffffffffffffff811115614df157600080fd5b8060051b36038213156123f257600080fd5b8183526000602080850194508260005b8581101561461e578135614e26816144c4565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614e13565b60208082528181018390526000906040808401600586901b8501820187855b88811015614fe2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112614ecf57600080fd5b8b018035614edc81614495565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41018112614f1957600080fd5b858901889052018035614f2b816147af565b67ffffffffffffffff1685880152614f44818901614b77565b606060ff80831682890152614f5a8a8501614b77565b92506080818416818a0152614f70838601614b77565b935060a09250818416838a0152614f8981860186614d9c565b60c08b81015294509150614fa4905061010089018483614e03565b925050614fb381840184614d9c565b93509050838783030160e0880152614fcc828483614e03565b978a019796505050928701925050600101614e6d565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a8d57610a8d614ff0565b81810381811115610a8d57610a8d614ff0565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6080815260006150a16080830188614927565b82810360208401526150b4818789615045565b60408401959095525050606001529392505050565b81356150d481614495565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135615114816144c4565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b878110156151e157813561518a81614495565b63ffffffff908116845282860135906151a282614495565b1683860152818401356151b4816144c4565b73ffffffffffffffffffffffffffffffffffffffff16838501526060928301929190910190600101615177565b5090979650505050505050565b60006040828403121561520057600080fd5b6040516040810181811067ffffffffffffffff8211171561522357615223614bc0565b604052823561523181614495565b81526020830135615241816144c4565b60208201529392505050565b60006020828403121561525f57600080fd5b813567ffffffffffffffff81111561527657600080fd5b61240684828501614cdd565b60ff8281168282160390811115610a8d57610a8d614ff0565b600060ff8316806152d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006153256080830184614927565b9695505050505050565b60006020828403121561534157600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152608081016124066040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006146926060830184614629565b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152606060408201526000615325606083018486615045565b60006020828403121561542b57600080fd5b815161111e816147af565b6000808585111561544657600080fd5b8386111561545357600080fd5b5050820193919092039150565b80356020831015610a8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600083516154ae818460208801614903565b8351908301906154c2818360208801614903565b01949350505050565b6060815260006154de60608301866145d7565b602083820360208501526154f282876145d7565b84810360408601528551808252602080880194509091019060005b81811015614fe25784518352938301939183019160010161550d565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156155695780818660020360031b1b83161692505b505092915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156155695760019490940360031b84901b1690921692915050565b60ff8181168382160190811115610a8d57610a8d614ff0565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006153256080830184614927565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156155695760149490940360031b84901b1690921692915050565b82815260008251615679816020850160208701614903565b919091016020019392505050565b6040815263ffffffff83511660408201526000602084015160a060608401526156b360e0840182614927565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c084015282810360208401526146928185614927565b60008451615717818460208901614903565b8201838582376000930192835250909392505050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b1660178401525061580e601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea2646970667358221220dc35a7a84adf6e996fd187ab70d2cc102980ef14f439fc0ec45d713eb54bacb364736f6c63430008160033";
40896
+ static readonly bytecode = "0x6101206040523480156200001257600080fd5b5060405162005a3c38038062005a3c8339810160408190526200003591620000ff565b6001600160a01b03861660805263ffffffff821660a05285858585858585828686620000613362000092565b60c09190915260025550506001600160a01b0392831660e05290911661010052506200017898505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000fa57600080fd5b919050565b60008060008060008060c087890312156200011957600080fd5b6200012487620000e2565b955060208701519450604087015193506200014260608801620000e2565b9250608087015163ffffffff811681146200015c57600080fd5b91506200016c60a08801620000e2565b90509295509295509295565b60805160a05160c05160e0516101005161585c620001e0600039600081816104a50152611fe90152600081816101ad0152612668015260008181611de801526125580152600081816127340152612802015260008181610e740152611568015261585c6000f3fe6080604052600436106101965760003560e01c80636750cd4c116100e1578063c28e0eed1161008a578063f2fde38b11610064578063f2fde38b14610572578063f8e1734c14610592578063faaebd21146105b2578063fd9be522146105df57600080fd5b8063c28e0eed14610512578063d15b0d4914610532578063f0f442601461055257600080fd5b806389b69dec116100bb57806389b69dec146104935780638da5cb5b146104c7578063c14c4349146104f257600080fd5b80636750cd4c1461042e5780636d26e5d01461045e578063715018a61461047e57600080fd5b806343ea4fa91161014357806352d2871f1161011d57806352d2871f146103a757806354fd4d50146103d457806361d027b31461040157600080fd5b806343ea4fa9146102e55780634d3a0f7c146103055780634d9632001461031857600080fd5b806329460b0b1161017457806329460b0b1461026157806339e3f9381461028357806340a7bb10146102b057600080fd5b806302bd97431461019b5780630f8355c0146101f9578063188183f414610234575b600080fd5b3480156101a757600080fd5b506101cf7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561020557600080fd5b506102266102143660046144a7565b60066020526000908152604090205481565b6040519081526020016101f0565b34801561024057600080fd5b5061025461024f3660046144f6565b6105ff565b6040516101f0919061452f565b34801561026d57600080fd5b5061028161027c366004614562565b61070c565b005b34801561028f57600080fd5b506102a361029e3660046144f6565b6108f1565b6040516101f0919061469b565b3480156102bc57600080fd5b506102d06102cb366004614702565b610a93565b604080519283526020830191909152016101f0565b3480156102f157600080fd5b506102a36103003660046144f6565b610ab8565b6102816103133660046147d0565b610e72565b34801561032457600080fd5b506103766103333660046144f6565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101f0565b3480156103b357600080fd5b506103c76103c23660046148c4565b611080565b6040516101f09190614971565b3480156103e057600080fd5b506040805160038152600060208201526001918101919091526060016101f0565b34801561040d57600080fd5b506003546101cf9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561043a57600080fd5b5061044e6104493660046144a7565b611125565b60405190151581526020016101f0565b34801561046a57600080fd5b50610281610479366004614984565b611130565b34801561048a57600080fd5b50610281611209565b34801561049f57600080fd5b506101cf7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104d357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101cf565b3480156104fe57600080fd5b5061028161050d3660046149ae565b61121d565b34801561051e57600080fd5b5061028161052d366004614a11565b611395565b34801561053e57600080fd5b5061028161054d366004614a2e565b611417565b34801561055e57600080fd5b5061028161056d366004614a11565b61149e565b34801561057e57600080fd5b5061028161058d366004614a11565b6114b2565b34801561059e57600080fd5b506102816105ad366004614a47565b611566565b3480156105be57600080fd5b506102266105cd366004614a11565b60056020526000908152604090205481565b3480156105eb57600080fd5b506102816105fa366004614ab8565b611667565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361069057825463ffffffff16610692565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff16806106e4578354640100000000900473ffffffffffffffffffffffffffffffffffffffff166106e6565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b6107146116cd565b60005b818110156108b3573683838381811061073257610732614ad6565b90506020028101906107449190614b05565b905060ff6107556020830183614b43565b610766906040810190602001614b88565b60ff16036107a0576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff6107af6020830183614b43565b6107c0906060810190604001614b88565b60ff16036107fa576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6108106020830183614b43565b61081e906020810190614ba3565b67ffffffffffffffff160361085f576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61087d61086f6020830183614b43565b61087890614d90565b61174e565b6108aa600061088f60208401846144a7565b61089c6020850185614b43565b6108a590614d90565b61179f565b50600101610717565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108e5929190614e4e565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a01000000000000000000009091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610a1257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109e7575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a8157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a56575b50505050508152505090505b92915050565b600080610aa88861ffff8b1688888888611b33565b9150915097509795505050505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b6857825467ffffffffffffffff168452610b87565b67ffffffffffffffff81811614610b875767ffffffffffffffff811684525b815468010000000000000000900460ff16610c3d57825468010000000000000000900460ff1615610c385782600101805480602002602001604051908101604052809291908181526020018280548015610c1757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610bec575b50505050506080850152825468010000000000000000900460ff1660208501525b610cdb565b815468010000000000000000900460ff90811614610cdb5781600101805480602002602001604051908101604052809291908181526020018280548015610cba57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c8f575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610daa5782546901000000000000000000900460ff1615610da55782600201805480602002602001604051908101604052809291908181526020018280548015610d6d57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d42575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e60565b81546901000000000000000000900460ff90811614610e605781600201805480602002602001604051908101604052809291908181526020018280548015610e2857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dfd575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e698461174e565b50505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610ee1576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ef48d8c8c8c8c8c8a8a611c39565b909250905061ffff8b168d600073ffffffffffffffffffffffffffffffffffffffff881615801590610f3d575060075473ffffffffffffffffffffffffffffffffffffffff1615155b9050600080610f4e84868886611ce6565b9092509050610f5d828761501f565b955085341015610f99576040517f78f38f7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fa58734615032565b90508015610fb757610fb78c82611e75565b811561102c578473ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f64316b4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102c8583611f80565b7f3dc6f2ede34d1db05729bbb76e5efd17ec1bc83f98f665e7fba0596dca438b96888b8b8a8660405161106395949392919061508e565b60405180910390a150505050505050505050505050505050505050565b6060600182036110be57611098838561ffff166105ff565b6040516020016110a8919061452f565b604051602081830303815290604052905061111e565b600282036110e4576110d4838561ffff16610ab8565b6040516020016110a8919061469b565b6040517f961a995f000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b9392505050565b6000610a8d82612043565b6111386116cd565b6020811115611173576040517fbcfcf59e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600090815260066020526040902054156111be576040517f831ad0ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff8216600081815260066020908152604091829020849055815192835282018390527ee9ab3709e58edd0db46318d63673d8ae4681fa3e51d9f9dc07cde5109ff74891016108e5565b6112116116cd565b61121b60006120aa565b565b6112256116cd565b60005b81811015611363573683838381811061124357611243614ad6565b60609081029290920192506000916112619150830160408401614a11565b73ffffffffffffffffffffffffffffffffffffffff16036112ae576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112be60408201602083016144a7565b63ffffffff166000036112fd576040517f8e2f797b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec9061133883856144a7565b63ffffffff168152602081019190915260400160002061135882826150c9565b505050600101611228565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de82826040516108e5929190615161565b61139d6116cd565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396906020015b60405180910390a150565b61141f6116cd565b600254811115611469576002546040517f7c83fcf0000000000000000000000000000000000000000000000000000000008152611115918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b78429060200161140c565b6114a66116cd565b6114af8161211f565b50565b6114ba6116cd565b73ffffffffffffffffffffffffffffffffffffffff811661155d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611115565b6114af816120aa565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146115d5576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115e28561ffff16612192565b600183036116095761160461ffff8616856115ff848601866151ee565b6121d9565b611660565b6002830361162b5761160461ffff8616856116268486018661524d565b612293565b6040517f961a995f00000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b5050505050565b611670816122dc565b61167a8282611e75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff841660208201529081018290527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a6669883906060016108e5565b60005473ffffffffffffffffffffffffffffffffffffffff16331461121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611115565b602081015160ff161580156117685750606081015160ff16155b156114af576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806117ba5750602081015160ff16155b1561180157608081015151156117fc576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611880565b806020015160ff1681608001515114158061183c57506002611825600160ff615282565b61182f919061529b565b60ff16816020015160ff16115b15611873576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118808160800151612346565b604081015160ff908116148061189b5750604081015160ff16155b156119215760a081015151156118dd576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161561191c576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f8565b806040015160ff168160a001515114158061195c57506002611945600160ff615282565b61194f919061529b565b60ff16816040015160ff16115b15611993576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615806119b45750806040015160ff16816060015160ff16115b156119eb576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119f88160a00151612346565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611b0f939085019201906143ff565b5060a08201518051611b2b9160028401916020909101906143ff565b505050505050565b600080600080611b4386866123e0565b915091506000611b548b8b846123f9565b90506000611b628c8c6105ff565b9050611b788a826000015163ffffffff1661240e565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b8152600401611bbb94939291906152e4565b602060405180830381865afa158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061532f565b611c06908361501f565b9150600080611c178e8e868e612456565b9092509050611c26828561501f565b9e909d509b505050505050505050505050565b6060600080611c4c8b8b8b8b8b8b61259a565b9050600080611c5b87876123e0565b915091506000611c6f8e8e61ffff166105ff565b60c085015151815191925090611c8c90829063ffffffff1661240e565b611ca582602001518660600151876040015184886128ab565b611caf908761501f565b9550600080611cbe87866129e4565b9092509050611ccd828961501f565b9750809850505050505050509850989650505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615611e6c5760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c5486000000000000000000000000000000000000000000000000000000001790526003549192506000918291611e109173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908490876129ff565b91509150611e2087878484612ab0565b90955093508415611e685760035473ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604081208054879290611e6290849061501f565b90915550505b5050505b94509492505050565b73ffffffffffffffffffffffffffffffffffffffff8216611ec2576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611f1c576040519150601f19603f3d011682016040523d82523d6000602084013e611f21565b606091505b5050905080611f7b576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401611115565b505050565b6007546003546040517f7da56b4b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528483166024820152604481018490526064810184905290821660848201527f000000000000000000000000000000000000000000000000000000000000000090911690637da56b4b9060a401600060405180830381600087803b15801561202f57600080fd5b505af1158015611b2b573d6000803e3d6000fd5b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061111e5750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161140c565b61219b81612043565b6114af576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401611115565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc8059061228690849086908590615348565b60405180910390a1505050565b61229e82848361179f565b6122a88284610ab8565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f5081828483604051612286939291906153a4565b3360009081526005602052604090205480821115612330576040517f7c83fcf00000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611115565b3360009081526005602052604090209190039055565b6000805b8251811015611f7b57600083828151811061236757612367614ad6565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116123d6576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915060010161234a565b6060806123ed8484612b2b565b915091505b9250929050565b6000612406848484612c18565b949350505050565b80821115612452576040517ff001cc650000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611115565b5050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615611e6c5760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd424422100000000000000000000000000000000000000000000000000000000179052600354919250600091829161257e9173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086612c92565b9150915061258e87878484612ab0565b94509450505050611e6c565b6040805160e0810182526000808252602080830182905282840182905260608084018390526080840183905260a0840183905260c084015261ffff891682526006905291822054909181900361261c576040517f20db826700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61262888878784612d3f565b6040517f6fe7b67300000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636fe7b673906126a3908b908d908c908c906004016153df565b6020604051808303816000875af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e69190615419565b905060006126fe6126f984838a8c615436565b612dff565b6040805160c085901b7fffffffffffffffff000000000000000000000000000000000000000000000000166020808301919091527f000000000000000000000000000000000000000000000000000000000000000060e090811b7fffffffff0000000000000000000000000000000000000000000000000000000016602884015273ffffffffffffffffffffffffffffffffffffffff8f16602c8401528d901b7dffff0000000000000000000000000000000000000000000000000000000016604c830152605080830185905283518084039091018152607090920190925280519101209091506040518060e001604052808467ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b61ffff1663ffffffff16815260200183815260200182815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509b9a5050505050505050505050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a42906129069088908890889088906004016152e4565b6020604051808303816000875af1158015612925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612949919061532f565b9050801561298c5773ffffffffffffffffffffffffffffffffffffffff86166000908152600560205260408120805483929061298690849061501f565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b600060606129f460058585612e59565b909590945092505050565b60006060863b808303612a2657604080516000808252602082019092529250925050612aa6565b60008060008761ffff1667ffffffffffffffff811115612a4857612a48614bc0565b6040519080825280601f01601f191660200182016040528015612a72576020820181803683370190505b509050600080885160208a018c8f8ff191503d925087831115612a93578792505b828152826000602083013e909450925050505b9550959350505050565b600080831580612ac1575082516020115b15612ad157506000905080611e6c565b600083806020019051810190612ae7919061532f565b90508515612af757809150612b21565b60006002548811612b0a57600254612b0c565b875b9050808211612b1b5781612b1d565b805b9350505b5094509492505050565b606080600080612b3b8686612fb5565b915091508051600003612b9357604080516000808252602082019092528391612b87565b604080518082019091526000815260606020820152815260200190600190039081612b5f5790505b509350935050506123f2565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612baa5790505090506040518060400160405280600260ff1681526020018381525081600081518110612c0057612c00614ad6565b60209081029190910101529196919550909350505050565b600080612c258585610ab8565b905060008351600014612c565783600081518110612c4557612c45614ad6565b602002602001015160200151612c67565b604051806020016040528060008152505b9050600080612c75836131f6565b91509150612c8684888a858561349a565b98975050505050505050565b60006060853b808303612cb957604080516000808252602082019092529250925050611e6c565b60008060008761ffff1667ffffffffffffffff811115612cdb57612cdb614bc0565b6040519080825280601f01601f191660200182016040528015612d05576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115612d25578792505b828152826000602083013e90999098509650505050505050565b612d4a81601461501f565b8214612d82576040517f20db826700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612d98612d9384848188615436565b613658565b90508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611660576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006020821115612e3c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e468284615460565b6020929092036008029190911c92915050565b600060606000612e68856136a8565b90506000612e758661378e565b805160208201206060880151604089015192935090916000612e978284610ab8565b905060008951600014612ec85789600081518110612eb757612eb7614ad6565b602002602001015160200151612ed9565b604051806020016040528060008152505b90506060612f398d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815250856137ab565b604051919b509150612f51908990899060200161549c565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612f9d939291906154cb565b60405180910390a15050505050505050935093915050565b6060806002831015612ff6576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260006004820152602401611115565b60006130056002828688615436565b61300e91615529565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd82016131df578060005b8683101561316b57600061305960018501858a8c615436565b61306291615571565b60f81c905060008190036130a5576040517fe3faa65500000000000000000000000000000000000000000000000000000000815260006004820152602401611115565b8160ff166000036130b8578091506130f5565b8160ff168160ff16146130f5573660006130d486868c8e615436565b915091506130e58989868585613a97565b9099509750859450919250829150505b600184019360009061310c90600301868b8d615436565b61311591615529565b60f01c90506000819003613158576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101869052602401611115565b8060020161ffff16850194505050613040565b8287146131a7576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b60028711156131d8573660006131bf85858b8d615436565b915091506131d08888858585613a97565b909850965050505b50506131ed565b6131ea828787613c0c565b93505b50509250929050565b606080825160000361320757915091565b600061321284613e8b565b90508060ff166001036132c45760408051600180825281830190925290816020015b6060815260200190600190039081613234579050509250838360008151811061325f5761325f614ad6565b602090810291909101015260408051600180825281830190925290816020016020820280368337019050509150613297846003613fb0565b826000815181106132aa576132aa614ad6565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff8111156132e0576132e0614bc0565b604051908082528060200260200182016040528015613309578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561332857613328614bc0565b60405190808252806020026020018201604052801561335b57816020015b60608152602001906001900390816133465790505b50925060008060ff5b865183101561340f57600190920191600061337f8885614030565b60029490940193905060006133948986613fb0565b90508260ff1660ff036133a957809250613400565b8260ff168160ff1614613400577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006133e88b87846140b0565b90506133f68a8a878461422a565b5093909301929150815b5061ffff169290920191613364565b818303600061341f8985846140b0565b905061342d8888858461422a565b60005b8660ff168160ff16101561348e57878160ff168151811061345357613453614ad6565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff169052600101613430565b50505050505050915091565b600080866040015187602001516134b191906155b7565b905060005b8160ff168160ff16101561364d576000886020015160ff168260ff161061350b5760a089015160208a01516134eb9084615282565b60ff16815181106134fe576134fe614ad6565b602002602001015161352d565b88608001518260ff168151811061352457613524614ad6565b60200260200101515b60408051602081019091526000808252919250905b865181101561359a578360ff1687828151811061356157613561614ad6565b602002602001015160ff16036135925787818151811061358357613583614ad6565b6020026020010151915061359a565b600101613542565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac916135f3918d918d9087906004016155d0565b602060405180830381865afa158015613610573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613634919061532f565b61363e908661501f565b945050508060010190506134b6565b505095945050505050565b600060148214613694576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61369e828461561b565b60601c9392505050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c00151604051602001613778929190615661565b600060606000806137bb856131f6565b915091506000876040015188602001516137d591906155b7565b90508060ff1667ffffffffffffffff8111156137f3576137f3614bc0565b60405190808252806020026020018201604052801561381c578160200160208202803683370190505b50935060005b8160ff168160ff161015613a8a576000896020015160ff168260ff16106138775760a08a015160208b01516138579084615282565b60ff168151811061386a5761386a614ad6565b6020026020010151613899565b89608001518260ff168151811061389057613890614ad6565b60200260200101515b60408051602081019091526000808252919250905b8551811015613906578360ff168682815181106138cd576138cd614ad6565b602002602001015160ff16036138fe578681815181106138ef576138ef614ad6565b60200260200101519150613906565b6001016138ae565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d79061395b908d908590600401615687565b6020604051808303816000875af115801561397a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399e919061532f565b878460ff16815181106139b3576139b3614ad6565b6020026020010181815250506000878460ff16815181106139d6576139d6614ad6565b60200260200101511115613a8057868360ff16815181106139f9576139f9614ad6565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a4e919061501f565b92505081905550868360ff1681518110613a6a57613a6a614ad6565b602002602001015188613a7d919061501f565b97505b5050600101613822565b5050505094509492505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613b3257865115613af457868484604051602001613ae093929190615705565b604051602081830303815290604052613b2b565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613c01565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613bca57855115613b8c57858484604051602001613b7893929190615705565b604051602081830303815290604052613bc3565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613c01565b6040517fe3faa65500000000000000000000000000000000000000000000000000000000815260ff86166004820152602401611115565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613d325760228214613c73576040517f9bebe0e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613c94613c86602260028688615436565b613c8f91615460565b614359565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b16602482015290915060340160405160208183030381529060405291505061111e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613e5357604282111580613d6d5750606282115b15613da4576040517f2b2e8c3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613db7613c86602260028688615436565b90506000613dcc613c86604260228789615436565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613e00866042818a615436565b613e0991615460565b60405160086020938403029190911c9250613e3a916001916011918391889183916031916002918b918b910161572d565b604051602081830303815290604052935050505061111e565b6040517f51458e6f00000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401611115565b600080805b8351821015613f6c576001909101906000613eab8584614030565b905060028301925060028161ffff161015613ef5576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101849052602401611115565b6000613f018685613fb0565b90508060ff1660ff03613f40576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b8316613f5d5760019485019460ff82161b831792505b5061ffff169190910190613e90565b83518214613fa9576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101839052602401611115565b5050919050565b6000613fbd82600161501f565b83511015614027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401611115565b50016001015190565b600061403d82600261501f565b835110156140a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401611115565b50016002015190565b6060816140be81601f61501f565b1015614126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401611115565b614130828461501f565b8451101561419a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401611115565b6060821580156141b95760405191506000825260208201604052614221565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141f25780518352602092830192016141da565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614267576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006142748360016155b7565b905060005b8451811015611b2b57600085828151811061429657614296614ad6565b602002602001015190508060ff168360ff160361430b578682815181106142bf576142bf614ad6565b6020026020010151846040516020016142d992919061549c565b6040516020818303038152906040528783815181106142fa576142fa614ad6565b602002602001018190525050611b2b565b8060ff16600003614350578286838151811061432957614329614ad6565b602002602001019060ff16908160ff1681525050838783815181106142fa576142fa614ad6565b50600101614279565b60006fffffffffffffffffffffffffffffffff8211156143fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401611115565b5090565b828054828255906000526020600020908101928215614479579160200282015b8281111561447957825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061441f565b506143fb9291505b808211156143fb5760008155600101614481565b63ffffffff811681146114af57600080fd5b6000602082840312156144b957600080fd5b813561111e81614495565b73ffffffffffffffffffffffffffffffffffffffff811681146114af57600080fd5b80356144f1816144c4565b919050565b6000806040838503121561450957600080fd5b8235614514816144c4565b9150602083013561452481614495565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff169082015260408101610a8d565b6000806020838503121561457557600080fd5b823567ffffffffffffffff8082111561458d57600080fd5b818501915085601f8301126145a157600080fd5b8135818111156145b057600080fd5b8660208260051b85010111156145c557600080fd5b60209290920196919550909350505050565b60008151808452602080850194506020840160005b8381101561461e57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016145ec565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261467960c08501826145d7565b905060a083015184820360a086015261469282826145d7565b95945050505050565b60208152600061111e6020830184614629565b803561ffff811681146144f157600080fd5b60008083601f8401126146d257600080fd5b50813567ffffffffffffffff8111156146ea57600080fd5b6020830191508360208285010111156123f257600080fd5b600080600080600080600060a0888a03121561471d57600080fd5b614726886146ae565b96506020880135614736816144c4565b9550604088013567ffffffffffffffff8082111561475357600080fd5b61475f8b838c016146c0565b909750955060608a01359150811515821461477957600080fd5b9093506080890135908082111561478f57600080fd5b5061479c8a828b016146c0565b989b979a50959850939692959293505050565b67ffffffffffffffff811681146114af57600080fd5b80356144f1816147af565b60008060008060008060008060008060006101008c8e0312156147f257600080fd5b6147fb8c6144e6565b9a5061480960208d016147c5565b995061481760408d016146ae565b985067ffffffffffffffff8060608e0135111561483357600080fd5b6148438e60608f01358f016146c0565b909950975060808d013581101561485957600080fd5b6148698e60808f01358f016146c0565b909750955061487a60a08e016144e6565b945061488860c08e016144e6565b93508060e08e0135111561489b57600080fd5b506148ac8d60e08e01358e016146c0565b81935080925050509295989b509295989b9093969950565b6000806000606084860312156148d957600080fd5b6148e2846146ae565b925060208401356148f2816144c4565b929592945050506040919091013590565b60005b8381101561491e578181015183820152602001614906565b50506000910152565b6000815180845261493f816020860160208601614903565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061111e6020830184614927565b6000806040838503121561499757600080fd5b6149a0836146ae565b946020939093013593505050565b600080602083850312156149c157600080fd5b823567ffffffffffffffff808211156149d957600080fd5b818501915085601f8301126149ed57600080fd5b8135818111156149fc57600080fd5b8660206060830285010111156145c557600080fd5b600060208284031215614a2357600080fd5b813561111e816144c4565b600060208284031215614a4057600080fd5b5035919050565b600080600080600060808688031215614a5f57600080fd5b614a68866146ae565b94506020860135614a78816144c4565b935060408601359250606086013567ffffffffffffffff811115614a9b57600080fd5b614aa7888289016146c0565b969995985093965092949392505050565b60008060408385031215614acb57600080fd5b82356149a0816144c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614b3957600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614b3957600080fd5b803560ff811681146144f157600080fd5b600060208284031215614b9a57600080fd5b61111e82614b77565b600060208284031215614bb557600080fd5b813561111e816147af565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614c1257614c12614bc0565b60405290565b600082601f830112614c2957600080fd5b8135602067ffffffffffffffff80831115614c4657614c46614bc0565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108482111715614c8957614c89614bc0565b6040529384526020818701810194908101925087851115614ca957600080fd5b6020870191505b84821015614cd2578135614cc3816144c4565b83529183019190830190614cb0565b979650505050505050565b600060c08284031215614cef57600080fd5b614cf7614bef565b9050614d02826147c5565b8152614d1060208301614b77565b6020820152614d2160408301614b77565b6040820152614d3260608301614b77565b6060820152608082013567ffffffffffffffff80821115614d5257600080fd5b614d5e85838601614c18565b608084015260a0840135915080821115614d7757600080fd5b50614d8484828501614c18565b60a08301525092915050565b6000610a8d3683614cdd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dd157600080fd5b830160208101925035905067ffffffffffffffff811115614df157600080fd5b8060051b36038213156123f257600080fd5b8183526000602080850194508260005b8581101561461e578135614e26816144c4565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614e13565b60208082528181018390526000906040808401600586901b8501820187855b88811015614fe2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112614ecf57600080fd5b8b018035614edc81614495565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41018112614f1957600080fd5b858901889052018035614f2b816147af565b67ffffffffffffffff1685880152614f44818901614b77565b606060ff80831682890152614f5a8a8501614b77565b92506080818416818a0152614f70838601614b77565b935060a09250818416838a0152614f8981860186614d9c565b60c08b81015294509150614fa4905061010089018483614e03565b925050614fb381840184614d9c565b93509050838783030160e0880152614fcc828483614e03565b978a019796505050928701925050600101614e6d565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610a8d57610a8d614ff0565b81810381811115610a8d57610a8d614ff0565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6080815260006150a16080830188614927565b82810360208401526150b4818789615045565b60408401959095525050606001529392505050565b81356150d481614495565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082161783556020840135615114816144c4565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b878110156151e157813561518a81614495565b63ffffffff908116845282860135906151a282614495565b1683860152818401356151b4816144c4565b73ffffffffffffffffffffffffffffffffffffffff16838501526060928301929190910190600101615177565b5090979650505050505050565b60006040828403121561520057600080fd5b6040516040810181811067ffffffffffffffff8211171561522357615223614bc0565b604052823561523181614495565b81526020830135615241816144c4565b60208201529392505050565b60006020828403121561525f57600080fd5b813567ffffffffffffffff81111561527657600080fd5b61240684828501614cdd565b60ff8281168282160390811115610a8d57610a8d614ff0565b600060ff8316806152d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006153256080830184614927565b9695505050505050565b60006020828403121561534157600080fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152608081016124066040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006146926060830184614629565b61ffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152606060408201526000615325606083018486615045565b60006020828403121561542b57600080fd5b815161111e816147af565b6000808585111561544657600080fd5b8386111561545357600080fd5b5050820193919092039150565b80356020831015610a8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600083516154ae818460208801614903565b8351908301906154c2818360208801614903565b01949350505050565b6060815260006154de60608301866145d7565b602083820360208501526154f282876145d7565b84810360408601528551808252602080880194509091019060005b81811015614fe25784518352938301939183019160010161550d565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156155695780818660020360031b1b83161692505b505092915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156155695760019490940360031b84901b1690921692915050565b60ff8181168382160190811115610a8d57610a8d614ff0565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006153256080830184614927565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156155695760149490940360031b84901b1690921692915050565b82815260008251615679816020850160208701614903565b919091016020019392505050565b6040815263ffffffff83511660408201526000602084015160a060608401526156b360e0840182614927565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c084015282810360208401526146928185614927565b60008451615717818460208901614903565b8201838582376000930192835250909392505050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b1660178401525061580e601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea264697066735822122042fd96ffa7f0b553975ee3cabb2a515f39ecca312398f6d1760b91f9152291d464736f6c63430008160033";
40883
40897
  static readonly abi: readonly [{
40884
40898
  readonly inputs: readonly [{
40885
40899
  readonly internalType: "address";
@@ -41970,7 +41984,7 @@ declare class ReceiveUln302__factory extends ContractFactory {
41970
41984
  }): TransactionRequest;
41971
41985
  attach(address: string): ReceiveUln302;
41972
41986
  connect(signer: Signer): ReceiveUln302__factory;
41973
- static readonly bytecode = "0x60c06040523480156200001157600080fd5b5060405162002eee38038062002eee833981016040819052620000349162000116565b8080816001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b919062000148565b620000a633620000c6565b6001600160a01b0390911660805263ffffffff1660a05250620001709050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b6000602082840312156200015b57600080fd5b815163ffffffff811681146200014157600080fd5b60805160a051612d3c620001b2600039600081816103410152610636015260008181610465015281816104ce0152818161158001526116720152612d3c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80633c782a5211610097578063715018a611610066578063715018a6146102695780638da5cb5b146102715780639c33abf714610299578063f2fde38b146102b957600080fd5b80633c782a52146101be57806343ea4fa91461022357806354fd4d50146102365780636750cd4c1461025657600080fd5b806320efd722116100d357806320efd7221461016557806327d12cd91461017857806329460b0b1461018b57806339e3f9381461019e57600080fd5b806301ffc9a7146101055780630223536e1461012d5780630894edf1146101425780631881d94d14610155575b600080fd5b610118610113366004611f50565b6102cc565b60405190151581526020015b60405180910390f35b61014061013b366004611ff8565b610328565b005b610140610150366004612055565b61033a565b60015b60405161012491906120d8565b610140610173366004612154565b6104cc565b610158610186366004612055565b61062d565b6101406101993660046121a7565b6106db565b6101b16101ac3660046121fd565b6108c0565b60405161012491906122eb565b6102036101cc3660046122fe565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610124565b6101b16102313660046121fd565b610a61565b604080516003815260006020820152600291810191909152606001610124565b610118610264366004612333565b610e1b565b610140610e26565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b6102ac6102a736600461234e565b610e3a565b6040516101249190612388565b6101406102c73660046123f5565b610ed3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2d669246000000000000000000000000000000000000000000000000000000001480610322575061032282610f8a565b92915050565b61033484848484611021565b50505050565b61036583837f0000000000000000000000000000000000000000000000000000000000000000611135565b60006103718484611208565b9050600061037f858561121a565b9050600061038d8383610a61565b90506103b18187876040516103a3929190612410565b60405180910390208661123d565b600060405180606001604052808463ffffffff1681526020016103d489896113ec565b81526020016103e38989611405565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461053b576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610334573683838381811061055957610559612420565b905060200281019061056b919061244f565b905061058261057d6020830183612333565b611428565b60026105946040830160208401612333565b63ffffffff16036105d4576105cf6105af6020830183612333565b866105bd604085018561248d565b8101906105ca91906126d1565b61146f565b610624565b6105e46040820160208301612333565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161053e565b600061065a84847f0000000000000000000000000000000000000000000000000000000000000000611135565b60006106668585611208565b90506000610674868661121a565b905061068381838888886114c5565b610692576002925050506106d4565b6106bd61069f8383610a61565b87876040516106af929190612410565b6040518091039020866116fb565b156106cd576001925050506106d4565b6000925050505b9392505050565b6106e3611804565b60005b81811015610882573683838381811061070157610701612420565b9050602002810190610713919061270e565b905060ff6107246020830183612742565b610735906040810190602001612776565b60ff160361076f576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff61077e6020830183612742565b61078f906060810190604001612776565b60ff16036107c9576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6107df6020830183612742565b6107ed906020810190612791565b67ffffffffffffffff160361082e576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084c61083e6020830183612742565b610847906127ac565b611885565b610879600061085e6020840184612333565b61086b6020850185612742565b610874906127ac565b6118d6565b506001016106e6565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108b4929190612868565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a010000000000000000000090910416606082015292810180548551818502810185019096528086529394919360808601938301828280156109e157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109b6575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a25575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b1157825467ffffffffffffffff168452610b30565b67ffffffffffffffff81811614610b305767ffffffffffffffff811684525b815468010000000000000000900460ff16610be657825468010000000000000000900460ff1615610be15782600101805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b95575b50505050506080850152825468010000000000000000900460ff1660208501525b610c84565b815468010000000000000000900460ff90811614610c845781600101805480602002602001604051908101604052809291908181526020018280548015610c6357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c38575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610d535782546901000000000000000000900460ff1615610d4e5782600201805480602002602001604051908101604052809291908181526020018280548015610d1657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ceb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e09565b81546901000000000000000000900460ff90811614610e095781600201805480602002602001604051908101604052809291908181526020018280548015610dd157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610da6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e1284611885565b50505092915050565b600061032282611c6a565b610e2e611804565b610e386000611cd1565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e9957610e738385610a61565b604051602001610e8391906122eb565b60405160208183030381529060405290506106d4565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015260240161061b565b610edb611804565b73ffffffffffffffffffffffffffffffffffffffff8116610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161061b565b610f8781611cd1565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061032257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610322565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906110539088908890612410565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab5691611127918790879086908890612a05565b60405180910390a150505050565b6051821461116f576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161117b8484611d46565b60ff16146111b5576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111c68484611d68565b63ffffffff1614611203576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60006106d46112178484611d78565b90565b600061122a600d60098486612a8a565b61123391612ab4565b60e01c9392505050565b6112488383836116fb565b61127e576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156113365760005b836020015160ff168160ff16101561133457600083815260026020908152604080832085845290915281206080860151805191929160ff85169081106112d6576112d6612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016905560010161128e565b505b604083015160ff16156112035760005b836040015160ff168160ff161015610334576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061138e5761138e612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611346565b60006113fc602d600d8486612a8a565b6106d491612afc565b6000611415600960018486612a8a565b61141e91612b38565b60c01c9392505050565b61143181611c6a565b610f87576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff8216600482015260240161061b565b61147a8284836118d6565b6114848284610a61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516114b893929190612b7e565b60405180910390a1505050565b60008060405180606001604052808863ffffffff1681526020016114e987876113ec565b81526020016114f88787611405565b67ffffffffffffffff908116909152604080517fe1e3a7df000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff888116606483015230608483015260a482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e1e3a7df9060c401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190612bb9565b6115fb5760009150506116f2565b8051602082015160408084015190517fc9fc7bcd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015263ffffffff9094166024820152604481019290925267ffffffffffffffff16606482015284917f0000000000000000000000000000000000000000000000000000000000000000169063c9fc7bcd90608401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190612bdb565b036116ec5760009150506116f2565b60019150505b95945050505050565b602083015160009060ff161561177e5760005b846020015160ff168160ff1610156117665761175085608001518260ff168151811061173c5761173c612420565b602002602001015185858860000151611d88565b61175e5760009150506106d4565b60010161170e565b50836040015160ff1660000361177e575060016106d4565b606084015160005b856040015160ff168160ff1610156117f8576117c88660a001518260ff16815181106117b4576117b4612420565b602002602001015186868960000151611d88565b156117f057816117d781612c23565b9250508160ff166000036117f0576001925050506106d4565b600101611786565b50600095945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061b565b602081015160ff1615801561189f5750606081015160ff16155b15610f87576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806118f15750602081015160ff16155b156119385760808101515115611933576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b7565b806020015160ff168160800151511415806119735750600261195c600160ff612c5e565b6119669190612c77565b60ff16816020015160ff16115b156119aa576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b78160800151611e17565b604081015160ff90811614806119d25750604081015160ff16155b15611a585760a08101515115611a14576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611a53576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f565b806040015160ff168160a0015151141580611a9357506002611a7c600160ff612c5e565b611a869190612c77565b60ff16816040015160ff16115b15611aca576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611aeb5750806040015160ff16816060015160ff16115b15611b22576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f8160a00151611e17565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611c4693908501920190611eb1565b5060a08201518051611c62916002840191602090910190611eb1565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806106d45750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611d556001828486612a8a565b611d5e91612cc0565b60f81c9392505050565b600061122a6031602d8486612a8a565b60006113fc605160318486612a8a565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611e0d57508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b6000805b8251811015611203576000838281518110611e3857611e38612420565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611ea7576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611e1b565b828054828255906000526020600020908101928215611f2b579160200282015b82811115611f2b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ed1565b50611f37929150611f3b565b5090565b5b80821115611f375760008155600101611f3c565b600060208284031215611f6257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106d457600080fd5b60008083601f840112611fa457600080fd5b50813567ffffffffffffffff811115611fbc57600080fd5b602083019150836020828501011115611fd457600080fd5b9250929050565b803567ffffffffffffffff81168114611ff357600080fd5b919050565b6000806000806060858703121561200e57600080fd5b843567ffffffffffffffff81111561202557600080fd5b61203187828801611f92565b9095509350506020850135915061204a60408601611fdb565b905092959194509250565b60008060006040848603121561206a57600080fd5b833567ffffffffffffffff81111561208157600080fd5b61208d86828701611f92565b909790965060209590950135949350505050565b60038110610f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016120e5836120a1565b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ff357600080fd5b60008083601f84011261212157600080fd5b50813567ffffffffffffffff81111561213957600080fd5b6020830191508360208260051b8501011115611fd457600080fd5b60008060006040848603121561216957600080fd5b612172846120eb565b9250602084013567ffffffffffffffff81111561218e57600080fd5b61219a8682870161210f565b9497909650939450505050565b600080602083850312156121ba57600080fd5b823567ffffffffffffffff8111156121d157600080fd5b6121dd8582860161210f565b90969095509350505050565b803563ffffffff81168114611ff357600080fd5b6000806040838503121561221057600080fd5b612219836120eb565b9150612227602084016121e9565b90509250929050565b60008151808452602080850194506020840160005b8381101561227757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612245565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526122d260c0850182612230565b905060a083015184820360a08601526116f28282612230565b6020815260006106d46020830184612282565b60008060006060848603121561231357600080fd5b833592506020840135915061232a604085016120eb565b90509250925092565b60006020828403121561234557600080fd5b6106d4826121e9565b60008060006060848603121561236357600080fd5b61236c846121e9565b925061237a602085016120eb565b915061232a604085016121e9565b60006020808352835180602085015260005b818110156123b65785810183015185820160400152820161239a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561240757600080fd5b6106d4826120eb565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261248357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124c257600080fd5b83018035915067ffffffffffffffff8211156124dd57600080fd5b602001915036819003821315611fd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612544576125446124f2565b60405290565b803560ff81168114611ff357600080fd5b600082601f83011261256c57600080fd5b8135602067ffffffffffffffff80831115612589576125896124f2565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156125cc576125cc6124f2565b60405293845260208187018101949081019250878511156125ec57600080fd5b6020870191505b8482101561261357612604826120eb565b835291830191908301906125f3565b979650505050505050565b600060c0828403121561263057600080fd5b612638612521565b905061264382611fdb565b81526126516020830161254a565b60208201526126626040830161254a565b60408201526126736060830161254a565b6060820152608082013567ffffffffffffffff8082111561269357600080fd5b61269f8583860161255b565b608084015260a08401359150808211156126b857600080fd5b506126c58482850161255b565b60a08301525092915050565b6000602082840312156126e357600080fd5b813567ffffffffffffffff8111156126fa57600080fd5b6127068482850161261e565b949350505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261248357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261248357600080fd5b60006020828403121561278857600080fd5b6106d48261254a565b6000602082840312156127a357600080fd5b6106d482611fdb565b6000610322368361261e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127ed57600080fd5b830160208101925035905067ffffffffffffffff81111561280d57600080fd5b8060051b3603821315611fd457600080fd5b8183526000602080850194508260005b858110156122775773ffffffffffffffffffffffffffffffffffffffff612855836120eb565b168752958201959082019060010161282f565b60208082528181018390526000906040808401600586901b8501820187855b888110156129f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126128e957600080fd5b8b0163ffffffff6128f9826121e9565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261293057600080fd5b8589018890520167ffffffffffffffff61294982611fdb565b168786015261295988820161254a565b606060ff8083168289015261296f8a850161254a565b92506080818416818a015261298583860161254a565b935060a09250818416838a015261299e818601866127b8565b60c08b810152945091506129b990506101008901848361281f565b9250506129c8818401846127b8565b93509050838783030160e08801526129e182848361281f565b978a019796505050928701925050600101612887565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b60008085851115612a9a57600080fd5b83861115612aa757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015612af45780818660040360031b1b83161692505b505092915050565b80356020831015610322577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015612af45760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006116f26060830184612282565b600060208284031215612bcb57600080fd5b815180151581146106d457600080fd5b600060208284031215612bed57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821680612c3657612c36612bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60ff828116828216039081111561032257610322612bf4565b600060ff831680612cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015612af45760019490940360031b84901b169092169291505056fea26469706673582212206b6899baa218c22638dee2c37f1b9e14a48b4302de3e54e8a2621908ca72d99564736f6c63430008160033";
41987
+ static readonly bytecode = "0x60c06040523480156200001157600080fd5b5060405162002eee38038062002eee833981016040819052620000349162000116565b8080816001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009b919062000148565b620000a633620000c6565b6001600160a01b0390911660805263ffffffff1660a05250620001709050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156200012957600080fd5b81516001600160a01b03811681146200014157600080fd5b9392505050565b6000602082840312156200015b57600080fd5b815163ffffffff811681146200014157600080fd5b60805160a051612d3c620001b2600039600081816103410152610636015260008181610465015281816104ce0152818161158001526116720152612d3c6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80633c782a5211610097578063715018a611610066578063715018a6146102695780638da5cb5b146102715780639c33abf714610299578063f2fde38b146102b957600080fd5b80633c782a52146101be57806343ea4fa91461022357806354fd4d50146102365780636750cd4c1461025657600080fd5b806320efd722116100d357806320efd7221461016557806327d12cd91461017857806329460b0b1461018b57806339e3f9381461019e57600080fd5b806301ffc9a7146101055780630223536e1461012d5780630894edf1146101425780631881d94d14610155575b600080fd5b610118610113366004611f50565b6102cc565b60405190151581526020015b60405180910390f35b61014061013b366004611ff8565b610328565b005b610140610150366004612055565b61033a565b60015b60405161012491906120d8565b610140610173366004612154565b6104cc565b610158610186366004612055565b61062d565b6101406101993660046121a7565b6106db565b6101b16101ac3660046121fd565b6108c0565b60405161012491906122eb565b6102036101cc3660046122fe565b600260209081526000938452604080852082529284528284209052825290205460ff811690610100900467ffffffffffffffff1682565b60408051921515835267ffffffffffffffff909116602083015201610124565b6101b16102313660046121fd565b610a61565b604080516003815260006020820152600291810191909152606001610124565b610118610264366004612333565b610e1b565b610140610e26565b60005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b6102ac6102a736600461234e565b610e3a565b6040516101249190612388565b6101406102c73660046123f5565b610ed3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2d669246000000000000000000000000000000000000000000000000000000001480610322575061032282610f8a565b92915050565b61033484848484611021565b50505050565b61036583837f0000000000000000000000000000000000000000000000000000000000000000611135565b60006103718484611208565b9050600061037f858561121a565b9050600061038d8383610a61565b90506103b18187876040516103a3929190612410565b60405180910390208661123d565b600060405180606001604052808463ffffffff1681526020016103d489896113ec565b81526020016103e38989611405565b67ffffffffffffffff908116909152604080517fa825d747000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff8681166064830152608482018890529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a825d7479060a401600060405180830381600087803b1580156104ab57600080fd5b505af11580156104bf573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461053b576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610334573683838381811061055957610559612420565b905060200281019061056b919061244f565b905061058261057d6020830183612333565b611428565b60026105946040830160208401612333565b63ffffffff16036105d4576105cf6105af6020830183612333565b866105bd604085018561248d565b8101906105ca91906126d1565b61146f565b610624565b6105e46040820160208301612333565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161053e565b600061065a84847f0000000000000000000000000000000000000000000000000000000000000000611135565b60006106668585611208565b90506000610674868661121a565b905061068381838888886114c5565b610692576002925050506106d4565b6106bd61069f8383610a61565b87876040516106af929190612410565b6040518091039020866116fb565b156106cd576001925050506106d4565b6000925050505b9392505050565b6106e3611804565b60005b81811015610882573683838381811061070157610701612420565b9050602002810190610713919061270e565b905060ff6107246020830183612742565b610735906040810190602001612776565b60ff160361076f576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff61077e6020830183612742565b61078f906060810190604001612776565b60ff16036107c9576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff6107df6020830183612742565b6107ed906020810190612791565b67ffffffffffffffff160361082e576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084c61083e6020830183612742565b610847906127ac565b611885565b610879600061085e6020840184612333565b61086b6020850185612742565b610874906127ac565b6118d6565b506001016106e6565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b56082826040516108b4929190612868565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a010000000000000000000090910416606082015292810180548551818502810185019096528086529394919360808601938301828280156109e157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116109b6575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610a5057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a25575b505050505081525050905092915050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff1680610b1157825467ffffffffffffffff168452610b30565b67ffffffffffffffff81811614610b305767ffffffffffffffff811684525b815468010000000000000000900460ff16610be657825468010000000000000000900460ff1615610be15782600101805480602002602001604051908101604052809291908181526020018280548015610bc057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610b95575b50505050506080850152825468010000000000000000900460ff1660208501525b610c84565b815468010000000000000000900460ff90811614610c845781600101805480602002602001604051908101604052809291908181526020018280548015610c6357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610c38575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff16610d535782546901000000000000000000900460ff1615610d4e5782600201805480602002602001604051908101604052809291908181526020018280548015610d1657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610ceb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e09565b81546901000000000000000000900460ff90811614610e095781600201805480602002602001604051908101604052809291908181526020018280548015610dd157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610da6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b610e1284611885565b50505092915050565b600061032282611c6a565b610e2e611804565b610e386000611cd1565b565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff831601610e9957610e738385610a61565b604051602001610e8391906122eb565b60405160208183030381529060405290506106d4565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff8316600482015260240161061b565b610edb611804565b73ffffffffffffffffffffffffffffffffffffffff8116610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161061b565b610f8781611cd1565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061032257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610322565b6040805180820182526001815267ffffffffffffffff8316602082015290516002906000906110539088908890612410565b6040805191829003909120825260208083019390935290810160009081208682528352818120338083529084529082902084518154959094015167ffffffffffffffff16610100027fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909516949094179290921790925590517f2cb0eed7538baeae4c6fde038c0fd0384d27de0dd55a228c65847bda6aa1ab5691611127918790879086908890612a05565b60405180910390a150505050565b6051821461116f576040517f0666bafd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161117b8484611d46565b60ff16146111b5576040517f28fac06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8063ffffffff166111c68484611d68565b63ffffffff1614611203576040517f9a61cd2600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60006106d46112178484611d78565b90565b600061122a600d60098486612a8a565b61123391612ab4565b60e01c9392505050565b6112488383836116fb565b61127e576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602083015160ff16156113365760005b836020015160ff168160ff16101561133457600083815260026020908152604080832085845290915281206080860151805191929160ff85169081106112d6576112d6612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016905560010161128e565b505b604083015160ff16156112035760005b836040015160ff168160ff161015610334576000838152600260209081526040808320858452909152812060a0860151805191929160ff851690811061138e5761138e612420565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000169055600101611346565b60006113fc602d600d8486612a8a565b6106d491612afc565b6000611415600960018486612a8a565b61141e91612b38565b60c01c9392505050565b61143181611c6a565b610f87576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff8216600482015260240161061b565b61147a8284836118d6565b6114848284610a61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f50818284836040516114b893929190612b7e565b60405180910390a1505050565b60008060405180606001604052808863ffffffff1681526020016114e987876113ec565b81526020016114f88787611405565b67ffffffffffffffff908116909152604080517fe1e3a7df000000000000000000000000000000000000000000000000000000008152835163ffffffff1660048201526020840151602482015290830151909116604482015273ffffffffffffffffffffffffffffffffffffffff888116606483015230608483015260a482018690529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e1e3a7df9060c401602060405180830381865afa1580156115c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ed9190612bb9565b6115fb5760009150506116f2565b8051602082015160408084015190517fc9fc7bcd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015263ffffffff9094166024820152604481019290925267ffffffffffffffff16606482015284917f0000000000000000000000000000000000000000000000000000000000000000169063c9fc7bcd90608401602060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190612bdb565b036116ec5760009150506116f2565b60019150505b95945050505050565b602083015160009060ff161561177e5760005b846020015160ff168160ff1610156117665761175085608001518260ff168151811061173c5761173c612420565b602002602001015185858860000151611d88565b61175e5760009150506106d4565b60010161170e565b50836040015160ff1660000361177e575060016106d4565b606084015160005b856040015160ff168160ff1610156117f8576117c88660a001518260ff16815181106117b4576117b4612420565b602002602001015186868960000151611d88565b156117f057816117d781612c23565b9250508160ff166000036117f0576001925050506106d4565b600101611786565b50600095945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161061b565b602081015160ff1615801561189f5750606081015160ff16155b15610f87576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff90811614806118f15750602081015160ff16155b156119385760808101515115611933576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b7565b806020015160ff168160800151511415806119735750600261195c600160ff612c5e565b6119669190612c77565b60ff16816020015160ff16115b156119aa576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b78160800151611e17565b604081015160ff90811614806119d25750604081015160ff16155b15611a585760a08101515115611a14576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611a53576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f565b806040015160ff168160a0015151141580611a9357506002611a7c600160ff612c5e565b611a869190612c77565b60ff16816040015160ff16115b15611aca576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611aeb5750806040015160ff16816060015160ff16115b15611b22576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b2f8160a00151611e17565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611c4693908501920190611eb1565b5060a08201518051611c62916002840191602090910190611eb1565b505050505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806106d45750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611d556001828486612a8a565b611d5e91612cc0565b60f81c9392505050565b600061122a6031602d8486612a8a565b60006113fc605160318486612a8a565b6000838152600260209081526040808320858452825280832073ffffffffffffffffffffffffffffffffffffffff88168452825280832081518083019092525460ff811615801580845261010090920467ffffffffffffffff16938301939093529091611e0d57508267ffffffffffffffff16816020015167ffffffffffffffff1610155b9695505050505050565b6000805b8251811015611203576000838281518110611e3857611e38612420565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611611ea7576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150600101611e1b565b828054828255906000526020600020908101928215611f2b579160200282015b82811115611f2b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ed1565b50611f37929150611f3b565b5090565b5b80821115611f375760008155600101611f3c565b600060208284031215611f6257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106d457600080fd5b60008083601f840112611fa457600080fd5b50813567ffffffffffffffff811115611fbc57600080fd5b602083019150836020828501011115611fd457600080fd5b9250929050565b803567ffffffffffffffff81168114611ff357600080fd5b919050565b6000806000806060858703121561200e57600080fd5b843567ffffffffffffffff81111561202557600080fd5b61203187828801611f92565b9095509350506020850135915061204a60408601611fdb565b905092959194509250565b60008060006040848603121561206a57600080fd5b833567ffffffffffffffff81111561208157600080fd5b61208d86828701611f92565b909790965060209590950135949350505050565b60038110610f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016120e5836120a1565b91905290565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ff357600080fd5b60008083601f84011261212157600080fd5b50813567ffffffffffffffff81111561213957600080fd5b6020830191508360208260051b8501011115611fd457600080fd5b60008060006040848603121561216957600080fd5b612172846120eb565b9250602084013567ffffffffffffffff81111561218e57600080fd5b61219a8682870161210f565b9497909650939450505050565b600080602083850312156121ba57600080fd5b823567ffffffffffffffff8111156121d157600080fd5b6121dd8582860161210f565b90969095509350505050565b803563ffffffff81168114611ff357600080fd5b6000806040838503121561221057600080fd5b612219836120eb565b9150612227602084016121e9565b90509250929050565b60008151808452602080850194506020840160005b8381101561227757815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101612245565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c060808501526122d260c0850182612230565b905060a083015184820360a08601526116f28282612230565b6020815260006106d46020830184612282565b60008060006060848603121561231357600080fd5b833592506020840135915061232a604085016120eb565b90509250925092565b60006020828403121561234557600080fd5b6106d4826121e9565b60008060006060848603121561236357600080fd5b61236c846121e9565b925061237a602085016120eb565b915061232a604085016121e9565b60006020808352835180602085015260005b818110156123b65785810183015185820160400152820161239a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561240757600080fd5b6106d4826120eb565b8183823760009101908152919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261248357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124c257600080fd5b83018035915067ffffffffffffffff8211156124dd57600080fd5b602001915036819003821315611fd457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612544576125446124f2565b60405290565b803560ff81168114611ff357600080fd5b600082601f83011261256c57600080fd5b8135602067ffffffffffffffff80831115612589576125896124f2565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156125cc576125cc6124f2565b60405293845260208187018101949081019250878511156125ec57600080fd5b6020870191505b8482101561261357612604826120eb565b835291830191908301906125f3565b979650505050505050565b600060c0828403121561263057600080fd5b612638612521565b905061264382611fdb565b81526126516020830161254a565b60208201526126626040830161254a565b60408201526126736060830161254a565b6060820152608082013567ffffffffffffffff8082111561269357600080fd5b61269f8583860161255b565b608084015260a08401359150808211156126b857600080fd5b506126c58482850161255b565b60a08301525092915050565b6000602082840312156126e357600080fd5b813567ffffffffffffffff8111156126fa57600080fd5b6127068482850161261e565b949350505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261248357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4183360301811261248357600080fd5b60006020828403121561278857600080fd5b6106d48261254a565b6000602082840312156127a357600080fd5b6106d482611fdb565b6000610322368361261e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127ed57600080fd5b830160208101925035905067ffffffffffffffff81111561280d57600080fd5b8060051b3603821315611fd457600080fd5b8183526000602080850194508260005b858110156122775773ffffffffffffffffffffffffffffffffffffffff612855836120eb565b168752958201959082019060010161282f565b60208082528181018390526000906040808401600586901b8501820187855b888110156129f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126128e957600080fd5b8b0163ffffffff6128f9826121e9565b168552878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4182360301811261293057600080fd5b8589018890520167ffffffffffffffff61294982611fdb565b168786015261295988820161254a565b606060ff8083168289015261296f8a850161254a565b92506080818416818a015261298583860161254a565b935060a09250818416838a015261299e818601866127b8565b60c08b810152945091506129b990506101008901848361281f565b9250506129c8818401846127b8565b93509050838783030160e08801526129e182848361281f565b978a019796505050928701925050600101612887565b509098975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8616815260806020820152836080820152838560a0830137600060a08583010152600060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f870116830101905067ffffffffffffffff841660408301528260608301529695505050505050565b60008085851115612a9a57600080fd5b83861115612aa757600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015612af45780818660040360031b1b83161692505b505092915050565b80356020831015610322577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008135818116916008851015612af45760089490940360031b84901b1690921692915050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526060604082015260006116f26060830184612282565b600060208284031215612bcb57600080fd5b815180151581146106d457600080fd5b600060208284031215612bed57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821680612c3657612c36612bf4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60ff828116828216039081111561032257610322612bf4565b600060ff831680612cb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015612af45760019490940360031b84901b169092169291505056fea264697066735822122042a1935882c8308e728f5e2d36d5ef6ed95c1c0277ba5ebb48490da5b011c93664736f6c63430008160033";
41974
41988
  static readonly abi: readonly [{
41975
41989
  readonly inputs: readonly [{
41976
41990
  readonly internalType: "address";
@@ -42521,7 +42535,7 @@ declare class SendUln302__factory extends ContractFactory {
42521
42535
  }): TransactionRequest;
42522
42536
  attach(address: string): SendUln302;
42523
42537
  connect(signer: Signer): SendUln302__factory;
42524
- static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162005bb938038062005bb9833981016040819052620000349162000129565b82828282836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200016e565b6001600160a01b03821660805263ffffffff811660a0528383620000c133620000d9565b60c091909152600255506200019d9650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200013f57600080fd5b83516001600160a01b03811681146200015757600080fd5b602085015160409095015190969495509392505050565b6000602082840312156200018157600080fd5b815163ffffffff811681146200019657600080fd5b9392505050565b60805160a05160c0516159d3620001e66000396000818161203e01526128d8015260005050600081816107ea0152818161092f01528181610e7f015261176c01526159d36000f3fe6080604052600436106101845760003560e01c806361d027b3116100d6578063d15b0d491161007f578063f2fde38b11610059578063f2fde38b14610513578063faaebd2114610533578063fd9be5221461056e57600080fd5b8063d15b0d49146104a6578063d80e9bd9146104c6578063f0f44260146104f357600080fd5b80638da5cb5b116100b05780638da5cb5b1461042e5780639c33abf714610459578063c14c43491461048657600080fd5b806361d027b3146103a75780636750cd4c146103f9578063715018a61461041957600080fd5b806329460b0b1161013857806343ea4fa91161011257806343ea4fa9146102cb5780634d963200146102eb57806354fd4d501461037a57600080fd5b806329460b0b1461025057806339e3f938146102705780634389e58f1461029d57600080fd5b80631881d94d116101695780631881d94d146101f2578063200175f71461020e57806320efd7221461023057600080fd5b806301ffc9a714610190578063188183f4146101c557600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506101b06101ab36600461453b565b61058e565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e03660046145cc565b610673565b6040516101bc9190614605565b3480156101fe57600080fd5b5060006040516101bc9190614638565b34801561021a57600080fd5b5061022e610229366004614679565b610780565b005b34801561023c57600080fd5b5061022e61024b3660046146ff565b61092d565b34801561025c57600080fd5b5061022e61026b366004614754565b610ae1565b34801561027c57600080fd5b5061029061028b3660046145cc565b610cc6565b6040516101bc919061485a565b3480156102a957600080fd5b506102bd6102b8366004614886565b610e67565b6040516101bc9291906149a4565b3480156102d757600080fd5b506102906102e63660046145cc565b610f61565b3480156102f757600080fd5b506103496103063660046145cc565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101bc565b34801561038657600080fd5b506040805160038152600060208201526002918101919091526060016101bc565b3480156103b357600080fd5b506003546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561040557600080fd5b506101b06104143660046149c8565b61131b565b34801561042557600080fd5b5061022e611326565b34801561043a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166103d4565b34801561046557600080fd5b506104796104743660046149e5565b61133a565b6040516101bc9190614a30565b34801561049257600080fd5b5061022e6104a1366004614a43565b611421565b3480156104b257600080fd5b5061022e6104c1366004614ab8565b611599565b3480156104d257600080fd5b506104e66104e1366004614886565b611627565b6040516101bc9190614ad1565b3480156104ff57600080fd5b5061022e61050e366004614ae8565b611697565b34801561051f57600080fd5b5061022e61052e366004614ae8565b6116ab565b34801561053f57600080fd5b5061056061054e366004614ae8565b60056020526000908152604090205481565b6040519081526020016101bc565b34801561057a57600080fd5b5061022e610589366004614b05565b61175f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061062157507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b8061066d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361070457825463ffffffff16610706565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff1680610758578354640100000000900473ffffffffffffffffffffffffffffffffffffffff1661075a565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107d1576040517fb90cdbb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190614b31565b73ffffffffffffffffffffffffffffffffffffffff16036108c4576040517f08d198d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cf838383611859565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461099c576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610adb57368383838181106109ba576109ba614b4e565b90506020028101906109cc9190614b7d565b90506109e36109de60208301836149c8565b6118cc565b60016109f560408301602084016149c8565b63ffffffff1603610a3557610a30610a1060208301836149c8565b86610a1e6040850185614bbb565b810190610a2b9190614cea565b611913565b610ad2565b6002610a4760408301602084016149c8565b63ffffffff1603610a8257610a30610a6260208301836149c8565b86610a706040850185614bbb565b810190610a7d9190614ea3565b6119c0565b610a9260408201602083016149c8565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161099f565b50505050565b610ae9611a09565b60005b81811015610c885736838383818110610b0757610b07614b4e565b9050602002810190610b199190614ed8565b905060ff610b2a6020830183614f0c565b610b3b906040810190602001614f40565b60ff1603610b75576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff610b846020830183614f0c565b610b95906060810190604001614f40565b60ff1603610bcf576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610be56020830183614f0c565b610bf3906020810190614f5b565b67ffffffffffffffff1603610c34576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c52610c446020830183614f0c565b610c4d90614f76565b611a8a565b610c7f6000610c6460208401846149c8565b610c716020850185614f0c565b610c7a90614f76565b611adb565b50600101610aec565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610cba929190615034565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a01000000000000000000009091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610de757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dbc575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610e5657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e2b575b505050505081525050905092915050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610eec576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610efa888888611e6f565b9092509050600080610f2c610f1560608c0160408d01614ae8565b610f2560808d0160608e016149c8565b858a611f3c565b9092509050610f3b8284615203565b604080518082019091529081526020810191909152945091925050505b94509492505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff168061101157825467ffffffffffffffff168452611030565b67ffffffffffffffff818116146110305767ffffffffffffffff811684525b815468010000000000000000900460ff166110e657825468010000000000000000900460ff16156110e157826001018054806020026020016040519081016040528092919081815260200182805480156110c057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611095575b50505050506080850152825468010000000000000000900460ff1660208501525b611184565b815468010000000000000000900460ff90811614611184578160010180548060200260200160405190810160405280929190818152602001828054801561116357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611138575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff166112535782546901000000000000000000900460ff161561124e578260020180548060200260200160405190810160405280929190818152602001828054801561121657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111eb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b611309565b81546901000000000000000000900460ff9081161461130957816002018054806020026020016040519081016040528092919081815260200182805480156112d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112a6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b61131284611a8a565b50505092915050565b600061066d826120ca565b61132e611a09565b6113386000612131565b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff831601611399576113738385610673565b6040516020016113839190614605565b604051602081830303815290604052905061141a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff8316016113e0576113d08385610f61565b604051602001611383919061485a565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610ac9565b9392505050565b611429611a09565b60005b81811015611567573683838381811061144757611447614b4e565b60609081029290920192506000916114659150830160408401614ae8565b73ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c260408201602083016149c8565b63ffffffff16600003611501576040517f8e2f797b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec9061153c83856149c8565b63ffffffff168152602081019190915260400160002061155c8282615216565b50505060010161142c565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de8282604051610cba9291906152ae565b6115a1611a09565b6002548111156115eb576002546040517f7c83fcf0000000000000000000000000000000000000000000000000000000008152610ac9918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806116786116516060890160408a01614ae8565b61166160808a0160608b016149c8565b61166e60c08b018b614bbb565b9050878a8a6121a6565b604080518082019091529182526020820152925050505b949350505050565b61169f611a09565b6116a8816122ac565b50565b6116b3611a09565b73ffffffffffffffffffffffffffffffffffffffff8116611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ac9565b6116a881612131565b6117688161231f565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190614b31565b9050611806818484612389565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a666988390606001610920565b73ffffffffffffffffffffffffffffffffffffffff82166118a6576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118c773ffffffffffffffffffffffffffffffffffffffff841683836123b9565b505050565b6118d5816120ca565b6116a8576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610ac9565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc805906109209084908690859061533b565b6119cb828483611adb565b6119d58284610f61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f508182848360405161092093929190615397565b60005473ffffffffffffffffffffffffffffffffffffffff163314611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac9565b602081015160ff16158015611aa45750606081015160ff16155b156116a8576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff9081161480611af65750602081015160ff16155b15611b3d5760808101515115611b38576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbc565b806020015160ff16816080015151141580611b7857506002611b61600160ff6153d2565b611b6b91906153eb565b60ff16816020015160ff16115b15611baf576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbc8160800151612446565b604081015160ff9081161480611bd75750604081015160ff16155b15611c5d5760a08101515115611c19576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611c58576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d34565b806040015160ff168160a0015151141580611c9857506002611c81600160ff6153d2565b611c8b91906153eb565b60ff16816040015160ff16115b15611ccf576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611cf05750806040015160ff16816060015160ff16115b15611d27576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d348160a00151612446565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611e4b939085019201906144a5565b5060a08201518051611e679160028401916020909101906144a5565b505050505050565b60606000806000611e8086866124e0565b90925090506000611eaa611e9a60608a0160408b01614ae8565b6101e060808b0160608c016149c8565b90506000611ebb60c08a018a614bbb565b90509050611ed381836000015163ffffffff166124f9565b6020820151611f0390611eec60808c0160608d016149c8565b611efc60608d0160408e01614ae8565b8488612541565b611f0d9086615203565b9450600080611f1c8b8661267a565b9092509050611f2b8288615203565b909b909a5098505050505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615610f585760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260035491925060009182916120669173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009084908761269d565b915091506120768787848461274e565b909550935084156120be5760035473ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040812080548792906120b8908490615203565b90915550505b50505094509492505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061141a5750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806121b686866124e0565b9150915060006121c78b8b846127c9565b905060006121d58c8c610673565b90506121eb8a826000015163ffffffff166124f9565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b815260040161222e9493929190615434565b602060405180830381865afa15801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f919061547f565b6122799083615203565b915060008061228a8e8e868e6127d6565b90925090506122998285615203565b9e909d509b505050505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161161c565b3360009081526005602052604090205480821115612373576040517f7c83fcf00000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610ac9565b3360009081526005602052604090209190039055565b73ffffffffffffffffffffffffffffffffffffffff83166123ae576118c7828261291a565b6118c7838383611859565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118c7908490612a20565b6000805b82518110156118c757600083828151811061246757612467614b4e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116124d6576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915060010161244a565b6060806124ed8484612b2f565b915091505b9250929050565b8082111561253d576040517ff001cc650000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610ac9565b5050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a429061259c908890889088908890600401615434565b6020604051808303816000875af11580156125bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125df919061547f565b905080156126225773ffffffffffffffffffffffffffffffffffffffff86166000908152600560205260408120805483929061261c908490615203565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b60006060612692600561268c86615526565b85612c1c565b909590945092505050565b60006060863b8083036126c457604080516000808252602082019092529250925050612744565b60008060008761ffff1667ffffffffffffffff8111156126e6576126e6614c20565b6040519080825280601f01601f191660200182016040528015612710576020820181803683370190505b509050600080885160208a018c8f8ff191503d925087831115612731578792505b828152826000602083013e909450925050505b9550959350505050565b60008083158061275f575082516020115b1561276f57506000905080610f58565b600083806020019051810190612785919061547f565b90508515612795578091506127bf565b600060025488116127a8576002546127aa565b875b90508082116127b957816127bb565b805b9350505b5094509492505050565b600061168f848484612d78565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615610f585760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd42442210000000000000000000000000000000000000000000000000000000017905260035491925060009182916128fe9173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086612df2565b9150915061290e8787848461274e565b94509450505050610f58565b73ffffffffffffffffffffffffffffffffffffffff8216612967576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146129c1576040519150601f19603f3d011682016040523d82523d6000602084013e6129c6565b606091505b50509050806118c7576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610ac9565b6000612a82826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e9f9092919063ffffffff16565b9050805160001480612aa3575080806020019051810190612aa391906155c4565b6118c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ac9565b606080600080612b3f8686612eae565b915091508051600003612b9757604080516000808252602082019092528391612b8b565b604080518082019091526000815260606020820152815260200190600190039081612b635790505b509350935050506124f2565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612bae5790505090506040518060400160405280600260ff1681526020018381525081600081518110612c0457612c04614b4e565b60209081029190910101529196919550909350505050565b600060606000612c2b856130ef565b90506000612c38866131d5565b805160208201206060880151604089015192935090916000612c5a8284610f61565b905060008951600014612c8b5789600081518110612c7a57612c7a614b4e565b602002602001015160200151612c9c565b604051806020016040528060008152505b90506060612cfc8d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815250856131f2565b604051919b509150612d1490899089906020016155e1565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612d6093929190615610565b60405180910390a15050505050505050935093915050565b600080612d858585610f61565b905060008351600014612db65783600081518110612da557612da5614b4e565b602002602001015160200151612dc7565b604051806020016040528060008152505b9050600080612dd5836134de565b91509150612de684888a8585613782565b98975050505050505050565b60006060853b808303612e1957604080516000808252602082019092529250925050610f58565b60008060008761ffff1667ffffffffffffffff811115612e3b57612e3b614c20565b6040519080825280601f01601f191660200182016040528015612e65576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115612e85578792505b828152826000602083013e90999098509650505050505050565b606061168f8484600085613940565b6060806002831015612eef576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260006004820152602401610ac9565b6000612efe600282868861566e565b612f0791615698565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd82016130d8578060005b86831015613064576000612f5260018501858a8c61566e565b612f5b916156e0565b60f81c90506000819003612f9e576040517fe3faa65500000000000000000000000000000000000000000000000000000000815260006004820152602401610ac9565b8160ff16600003612fb157809150612fee565b8160ff168160ff1614612fee57366000612fcd86868c8e61566e565b91509150612fde8989868585613a59565b9099509750859450919250829150505b600184019360009061300590600301868b8d61566e565b61300e91615698565b60f01c90506000819003613051576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101869052602401610ac9565b8060020161ffff16850194505050612f39565b8287146130a0576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101849052602401610ac9565b60028711156130d1573660006130b885858b8d61566e565b915091506130c98888858585613a59565b909850965050505b50506130e6565b6130e3828787613bce565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c001516040516020016131bf929190615726565b60006060600080613202856134de565b9150915060008760400151886020015161321c919061574c565b90508060ff1667ffffffffffffffff81111561323a5761323a614c20565b604051908082528060200260200182016040528015613263578160200160208202803683370190505b50935060005b8160ff168160ff1610156134d1576000896020015160ff168260ff16106132be5760a08a015160208b015161329e90846153d2565b60ff16815181106132b1576132b1614b4e565b60200260200101516132e0565b89608001518260ff16815181106132d7576132d7614b4e565b60200260200101515b60408051602081019091526000808252919250905b855181101561334d578360ff1686828151811061331457613314614b4e565b602002602001015160ff16036133455786818151811061333657613336614b4e565b6020026020010151915061334d565b6001016132f5565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d7906133a2908d908590600401615765565b6020604051808303816000875af11580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e5919061547f565b878460ff16815181106133fa576133fa614b4e565b6020026020010181815250506000878460ff168151811061341d5761341d614b4e565b602002602001015111156134c757868360ff168151811061344057613440614b4e565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134959190615203565b92505081905550868360ff16815181106134b1576134b1614b4e565b6020026020010151886134c49190615203565b97505b5050600101613269565b5050505094509492505050565b60608082516000036134ef57915091565b60006134fa84613e4d565b90508060ff166001036135ac5760408051600180825281830190925290816020015b606081526020019060019003908161351c579050509250838360008151811061354757613547614b4e565b60209081029190910101526040805160018082528183019092529081602001602082028036833701905050915061357f846003613f72565b8260008151811061359257613592614b4e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff8111156135c8576135c8614c20565b6040519080825280602002602001820160405280156135f1578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561361057613610614c20565b60405190808252806020026020018201604052801561364357816020015b606081526020019060019003908161362e5790505b50925060008060ff5b86518310156136f75760019092019160006136678885613ff2565b600294909401939050600061367c8986613f72565b90508260ff1660ff03613691578092506136e8565b8260ff168160ff16146136e8577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006136d08b8784614072565b90506136de8a8a87846141ec565b5093909301929150815b5061ffff16929092019161364c565b8183036000613707898584614072565b9050613715888885846141ec565b60005b8660ff168160ff16101561377657878160ff168151811061373b5761373b614b4e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff169052600101613718565b50505050505050915091565b60008086604001518760200151613799919061574c565b905060005b8160ff168160ff161015613935576000886020015160ff168260ff16106137f35760a089015160208a01516137d390846153d2565b60ff16815181106137e6576137e6614b4e565b6020026020010151613815565b88608001518260ff168151811061380c5761380c614b4e565b60200260200101515b60408051602081019091526000808252919250905b8651811015613882578360ff1687828151811061384957613849614b4e565b602002602001015160ff160361387a5787818151811061386b5761386b614b4e565b60200260200101519150613882565b60010161382a565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac916138db918d918d9087906004016157e3565b602060405180830381865afa1580156138f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391c919061547f565b6139269086615203565b9450505080600101905061379e565b505095945050505050565b6060824710156139d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ac9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516139fb919061582e565b60006040518083038185875af1925050503d8060008114613a38576040519150601f19603f3d011682016040523d82523d6000602084013e613a3d565b606091505b5091509150613a4e8783838761431b565b979650505050505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613af457865115613ab657868484604051602001613aa293929190615840565b604051602081830303815290604052613aed565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613bc3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613b8c57855115613b4e57858484604051602001613b3a93929190615840565b604051602081830303815290604052613b85565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613bc3565b6040517fe3faa65500000000000000000000000000000000000000000000000000000000815260ff86166004820152602401610ac9565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613cf45760228214613c35576040517f9bebe0e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613c56613c4860226002868861566e565b613c5191615868565b6143bb565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b16602482015290915060340160405160208183030381529060405291505061141a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613e1557604282111580613d2f5750606282115b15613d66576040517f2b2e8c3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d79613c4860226002868861566e565b90506000613d8e613c4860426022878961566e565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613dc2866042818a61566e565b613dcb91615868565b60405160086020938403029190911c9250613dfc916001916011918391889183916031916002918b918b91016158a4565b604051602081830303815290604052935050505061141a565b6040517f51458e6f00000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401610ac9565b600080805b8351821015613f2e576001909101906000613e6d8584613ff2565b905060028301925060028161ffff161015613eb7576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101849052602401610ac9565b6000613ec38685613f72565b90508060ff1660ff03613f02576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b8316613f1f5760019485019460ff82161b831792505b5061ffff169190910190613e52565b83518214613f6b576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101839052602401610ac9565b5050919050565b6000613f7f826001615203565b83511015613fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610ac9565b50016001015190565b6000613fff826002615203565b83511015614069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610ac9565b50016002015190565b60608161408081601f615203565b10156140e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610ac9565b6140f28284615203565b8451101561415c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610ac9565b60608215801561417b57604051915060008252602082016040526141e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141b457805183526020928301920161419c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614229576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061423683600161574c565b905060005b8451811015611e6757600085828151811061425857614258614b4e565b602002602001015190508060ff168360ff16036142cd5786828151811061428157614281614b4e565b60200260200101518460405160200161429b9291906155e1565b6040516020818303038152906040528783815181106142bc576142bc614b4e565b602002602001018190525050611e67565b8060ff1660000361431257828683815181106142eb576142eb614b4e565b602002602001019060ff16908160ff1681525050838783815181106142bc576142bc614b4e565b5060010161423b565b606083156143b15782516000036143aa5773ffffffffffffffffffffffffffffffffffffffff85163b6143aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac9565b508161168f565b61168f8383614461565b60006fffffffffffffffffffffffffffffffff82111561445d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610ac9565b5090565b8151156144715781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac99190614a30565b82805482825590600052602060002090810192821561451f579160200282015b8281111561451f57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906144c5565b5061445d9291505b8082111561445d5760008155600101614527565b60006020828403121561454d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146116a857600080fd5b80356145aa8161457d565b919050565b63ffffffff811681146116a857600080fd5b80356145aa816145af565b600080604083850312156145df57600080fd5b82356145ea8161457d565b915060208301356145fa816145af565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff16908201526040810161066d565b6020810160038310614673577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060006060848603121561468e57600080fd5b83356146998161457d565b925060208401356146a98161457d565b929592945050506040919091013590565b60008083601f8401126146cc57600080fd5b50813567ffffffffffffffff8111156146e457600080fd5b6020830191508360208260051b85010111156124f257600080fd5b60008060006040848603121561471457600080fd5b833561471f8161457d565b9250602084013567ffffffffffffffff81111561473b57600080fd5b614747868287016146ba565b9497909650939450505050565b6000806020838503121561476757600080fd5b823567ffffffffffffffff81111561477e57600080fd5b61478a858286016146ba565b90969095509350505050565b60008151808452602080850194506020840160005b838110156147dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016147ab565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261483860c0850182614796565b905060a083015184820360a08601526148518282614796565b95945050505050565b60208152600061141a60208301846147e8565b80151581146116a857600080fd5b80356145aa8161486d565b6000806000806060858703121561489c57600080fd5b843567ffffffffffffffff808211156148b457600080fd5b9086019060e082890312156148c857600080fd5b909450602086013590808211156148de57600080fd5b818701915087601f8301126148f257600080fd5b81358181111561490157600080fd5b88602082850101111561491357600080fd5b60208301955080945050505061492b6040860161487b565b905092959194509250565b60005b83811015614951578181015183820152602001614939565b50506000910152565b60008151808452614972816020860160208601614936565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b825181526020808401519082015260606040820152600061168f606083018461495a565b6000602082840312156149da57600080fd5b813561141a816145af565b6000806000606084860312156149fa57600080fd5b8335614a05816145af565b92506020840135614a158161457d565b91506040840135614a25816145af565b809150509250925092565b60208152600061141a602083018461495a565b60008060208385031215614a5657600080fd5b823567ffffffffffffffff80821115614a6e57600080fd5b818501915085601f830112614a8257600080fd5b813581811115614a9157600080fd5b866020606083028501011115614aa657600080fd5b60209290920196919550909350505050565b600060208284031215614aca57600080fd5b5035919050565b81518152602080830151908201526040810161066d565b600060208284031215614afa57600080fd5b813561141a8161457d565b60008060408385031215614b1857600080fd5b8235614b238161457d565b946020939093013593505050565b600060208284031215614b4357600080fd5b815161141a8161457d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614bb157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614bf057600080fd5b83018035915067ffffffffffffffff821115614c0b57600080fd5b6020019150368190038213156124f257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614c7257614c72614c20565b60405290565b60405160e0810167ffffffffffffffff81118282101715614c7257614c72614c20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ce257614ce2614c20565b604052919050565b600060408284031215614cfc57600080fd5b6040516040810181811067ffffffffffffffff82111715614d1f57614d1f614c20565b6040528235614d2d816145af565b81526020830135614d3d8161457d565b60208201529392505050565b803567ffffffffffffffff811681146145aa57600080fd5b803560ff811681146145aa57600080fd5b600082601f830112614d8357600080fd5b8135602067ffffffffffffffff821115614d9f57614d9f614c20565b8160051b614dae828201614c9b565b9283528481018201928281019087851115614dc857600080fd5b83870192505b84831015613a4e578235614de18161457d565b82529183019190830190614dce565b600060c08284031215614e0257600080fd5b614e0a614c4f565b9050614e1582614d49565b8152614e2360208301614d61565b6020820152614e3460408301614d61565b6040820152614e4560608301614d61565b6060820152608082013567ffffffffffffffff80821115614e6557600080fd5b614e7185838601614d72565b608084015260a0840135915080821115614e8a57600080fd5b50614e9784828501614d72565b60a08301525092915050565b600060208284031215614eb557600080fd5b813567ffffffffffffffff811115614ecc57600080fd5b61168f84828501614df0565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614bb157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614bb157600080fd5b600060208284031215614f5257600080fd5b61141a82614d61565b600060208284031215614f6d57600080fd5b61141a82614d49565b600061066d3683614df0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614fb757600080fd5b830160208101925035905067ffffffffffffffff811115614fd757600080fd5b8060051b36038213156124f257600080fd5b8183526000602080850194508260005b858110156147dd57813561500c8161457d565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614ff9565b60208082528181018390526000906040808401600586901b8501820187855b888110156151c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126150b557600080fd5b8b0180356150c2816145af565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff410181126150ff57600080fd5b8589018890520167ffffffffffffffff61511882614d49565b1687860152615128888201614d61565b606060ff8083168289015261513e8a8501614d61565b92506080818416818a0152615154838601614d61565b935060a09250818416838a015261516d81860186614f82565b60c08b81015294509150615188905061010089018483614fe9565b92505061519781840184614f82565b93509050838783030160e08801526151b0828483614fe9565b978a019796505050928701925050600101615053565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561066d5761066d6151d4565b8135615221816145af565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000821617835560208401356152618161457d565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b8781101561532e5781356152d7816145af565b63ffffffff908116845282860135906152ef826145af565b1683860152818401356153018161457d565b73ffffffffffffffffffffffffffffffffffffffff168385015260609283019291909101906001016152c4565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526080810161168f6040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff8316602082015260606040820152600061485160608301846147e8565b60ff828116828216039081111561066d5761066d6151d4565b600060ff831680615425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000615475608083018461495a565b9695505050505050565b60006020828403121561549157600080fd5b5051919050565b600082601f8301126154a957600080fd5b813567ffffffffffffffff8111156154c3576154c3614c20565b6154f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614c9b565b81815284602083860101111561550957600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561553857600080fd5b615540614c78565b61554983614d49565b8152615557602084016145c1565b60208201526155686040840161459f565b6040820152615579606084016145c1565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff8111156155ac57600080fd5b6155b836828601615498565b60c08301525092915050565b6000602082840312156155d657600080fd5b815161141a8161486d565b600083516155f3818460208801614936565b835190830190615607818360208801614936565b01949350505050565b6060815260006156236060830186614796565b602083820360208501526156378287614796565b84810360408601528551808252602080880194509091019060005b818110156151c657845183529383019391830191600101615652565b6000808585111561567e57600080fd5b8386111561568b57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156156d85780818660020360031b1b83161692505b505092915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156156d85760019490940360031b84901b1690921692915050565b8281526000825161573e816020850160208701614936565b919091016020019392505050565b60ff818116838216019081111561066d5761066d6151d4565b6040815263ffffffff83511660408201526000602084015160a0606084015261579160e084018261495a565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c08401528281036020840152614851818561495a565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000615475608083018461495a565b60008251614bb1818460208701614936565b60008451615852818460208901614936565b8201838582376000930192835250909392505050565b8035602083101561066d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615985601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea2646970667358221220dcaf166901f5b01121b439318b610035ea751373bb8f7c2e7bc331cef8da93b964736f6c63430008160033";
42538
+ static readonly bytecode = "0x60e06040523480156200001157600080fd5b5060405162005bb938038062005bb9833981016040819052620000349162000129565b82828282836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200016e565b6001600160a01b03821660805263ffffffff811660a0528383620000c133620000d9565b60c091909152600255506200019d9650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200013f57600080fd5b83516001600160a01b03811681146200015757600080fd5b602085015160409095015190969495509392505050565b6000602082840312156200018157600080fd5b815163ffffffff811681146200019657600080fd5b9392505050565b60805160a05160c0516159d3620001e66000396000818161203e01526128d8015260005050600081816107ea0152818161092f01528181610e7f015261176c01526159d36000f3fe6080604052600436106101845760003560e01c806361d027b3116100d6578063d15b0d491161007f578063f2fde38b11610059578063f2fde38b14610513578063faaebd2114610533578063fd9be5221461056e57600080fd5b8063d15b0d49146104a6578063d80e9bd9146104c6578063f0f44260146104f357600080fd5b80638da5cb5b116100b05780638da5cb5b1461042e5780639c33abf714610459578063c14c43491461048657600080fd5b806361d027b3146103a75780636750cd4c146103f9578063715018a61461041957600080fd5b806329460b0b1161013857806343ea4fa91161011257806343ea4fa9146102cb5780634d963200146102eb57806354fd4d501461037a57600080fd5b806329460b0b1461025057806339e3f938146102705780634389e58f1461029d57600080fd5b80631881d94d116101695780631881d94d146101f2578063200175f71461020e57806320efd7221461023057600080fd5b806301ffc9a714610190578063188183f4146101c557600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b506101b06101ab36600461453b565b61058e565b60405190151581526020015b60405180910390f35b3480156101d157600080fd5b506101e56101e03660046145cc565b610673565b6040516101bc9190614605565b3480156101fe57600080fd5b5060006040516101bc9190614638565b34801561021a57600080fd5b5061022e610229366004614679565b610780565b005b34801561023c57600080fd5b5061022e61024b3660046146ff565b61092d565b34801561025c57600080fd5b5061022e61026b366004614754565b610ae1565b34801561027c57600080fd5b5061029061028b3660046145cc565b610cc6565b6040516101bc919061485a565b3480156102a957600080fd5b506102bd6102b8366004614886565b610e67565b6040516101bc9291906149a4565b3480156102d757600080fd5b506102906102e63660046145cc565b610f61565b3480156102f757600080fd5b506103496103063660046145cc565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101bc565b34801561038657600080fd5b506040805160038152600060208201526002918101919091526060016101bc565b3480156103b357600080fd5b506003546103d49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b34801561040557600080fd5b506101b06104143660046149c8565b61131b565b34801561042557600080fd5b5061022e611326565b34801561043a57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166103d4565b34801561046557600080fd5b506104796104743660046149e5565b61133a565b6040516101bc9190614a30565b34801561049257600080fd5b5061022e6104a1366004614a43565b611421565b3480156104b257600080fd5b5061022e6104c1366004614ab8565b611599565b3480156104d257600080fd5b506104e66104e1366004614886565b611627565b6040516101bc9190614ad1565b3480156104ff57600080fd5b5061022e61050e366004614ae8565b611697565b34801561051f57600080fd5b5061022e61052e366004614ae8565b6116ab565b34801561053f57600080fd5b5061056061054e366004614ae8565b60056020526000908152604090205481565b6040519081526020016101bc565b34801561057a57600080fd5b5061022e610589366004614b05565b61175f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061062157507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b8061066d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361070457825463ffffffff16610706565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff1680610758578354640100000000900473ffffffffffffffffffffffffffffffffffffffff1661075a565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633146107d1576040517fb90cdbb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108779190614b31565b73ffffffffffffffffffffffffffffffffffffffff16036108c4576040517f08d198d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cf838383611859565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16331461099c576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610adb57368383838181106109ba576109ba614b4e565b90506020028101906109cc9190614b7d565b90506109e36109de60208301836149c8565b6118cc565b60016109f560408301602084016149c8565b63ffffffff1603610a3557610a30610a1060208301836149c8565b86610a1e6040850185614bbb565b810190610a2b9190614cea565b611913565b610ad2565b6002610a4760408301602084016149c8565b63ffffffff1603610a8257610a30610a6260208301836149c8565b86610a706040850185614bbb565b810190610a7d9190614ea3565b6119c0565b610a9260408201602083016149c8565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5060010161099f565b50505050565b610ae9611a09565b60005b81811015610c885736838383818110610b0757610b07614b4e565b9050602002810190610b199190614ed8565b905060ff610b2a6020830183614f0c565b610b3b906040810190602001614f40565b60ff1603610b75576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff610b846020830183614f0c565b610b95906060810190604001614f40565b60ff1603610bcf576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610be56020830183614f0c565b610bf3906020810190614f5b565b67ffffffffffffffff1603610c34576040517f8f6ae8f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c52610c446020830183614f0c565b610c4d90614f76565b611a8a565b610c7f6000610c6460208401846149c8565b610c716020850185614f0c565b610c7a90614f76565b611adb565b50600101610aec565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610cba929190615034565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a01000000000000000000009091041660608201529281018054855181850281018501909652808652939491936080860193830182828015610de757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610dbc575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610e5657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610e2b575b505050505081525050905092915050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610eec576040517f7eb966c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610efa888888611e6f565b9092509050600080610f2c610f1560608c0160408d01614ae8565b610f2560808d0160608e016149c8565b858a611f3c565b9092509050610f3b8284615203565b604080518082019091529081526020810191909152945091925050505b94509492505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff168061101157825467ffffffffffffffff168452611030565b67ffffffffffffffff818116146110305767ffffffffffffffff811684525b815468010000000000000000900460ff166110e657825468010000000000000000900460ff16156110e157826001018054806020026020016040519081016040528092919081815260200182805480156110c057602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611095575b50505050506080850152825468010000000000000000900460ff1660208501525b611184565b815468010000000000000000900460ff90811614611184578160010180548060200260200160405190810160405280929190818152602001828054801561116357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611138575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff166112535782546901000000000000000000900460ff161561124e578260020180548060200260200160405190810160405280929190818152602001828054801561121657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116111eb575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b611309565b81546901000000000000000000900460ff9081161461130957816002018054806020026020016040519081016040528092919081815260200182805480156112d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112a6575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b61131284611a8a565b50505092915050565b600061066d826120ca565b61132e611a09565b6113386000612131565b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff831601611399576113738385610673565b6040516020016113839190614605565b604051602081830303815290604052905061141a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff8316016113e0576113d08385610f61565b604051602001611383919061485a565b6040517f3018cc2b00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610ac9565b9392505050565b611429611a09565b60005b81811015611567573683838381811061144757611447614b4e565b60609081029290920192506000916114659150830160408401614ae8565b73ffffffffffffffffffffffffffffffffffffffff16036114b2576040517f710c949700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c260408201602083016149c8565b63ffffffff16600003611501576040517f8e2f797b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec9061153c83856149c8565b63ffffffff168152602081019190915260400160002061155c8282615216565b50505060010161142c565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de8282604051610cba9291906152ae565b6115a1611a09565b6002548111156115eb576002546040517f7c83fcf0000000000000000000000000000000000000000000000000000000008152610ac9918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806116786116516060890160408a01614ae8565b61166160808a0160608b016149c8565b61166e60c08b018b614bbb565b9050878a8a6121a6565b604080518082019091529182526020820152925050505b949350505050565b61169f611a09565b6116a8816122ac565b50565b6116b3611a09565b73ffffffffffffffffffffffffffffffffffffffff8116611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ac9565b6116a881612131565b6117688161231f565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190614b31565b9050611806818484612389565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a666988390606001610920565b73ffffffffffffffffffffffffffffffffffffffff82166118a6576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118c773ffffffffffffffffffffffffffffffffffffffff841683836123b9565b505050565b6118d5816120ca565b6116a8576040517f2146a07a00000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610ac9565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc805906109209084908690859061533b565b6119cb828483611adb565b6119d58284610f61565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f508182848360405161092093929190615397565b60005473ffffffffffffffffffffffffffffffffffffffff163314611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac9565b602081015160ff16158015611aa45750606081015160ff16155b156116a8576040517f7e36c28400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff9081161480611af65750602081015160ff16155b15611b3d5760808101515115611b38576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbc565b806020015160ff16816080015151141580611b7857506002611b61600160ff6153d2565b611b6b91906153eb565b60ff16816020015160ff16115b15611baf576040517f1b66804100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbc8160800151612446565b604081015160ff9081161480611bd75750604081015160ff16155b15611c5d5760a08101515115611c19576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611c58576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d34565b806040015160ff168160a0015151141580611c9857506002611c81600160ff6153d2565b611c8b91906153eb565b60ff16816040015160ff16115b15611ccf576040517f05f7ab6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611cf05750806040015160ff16816060015160ff16115b15611d27576040517f81da67ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d348160a00151612446565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a0100000000000000000000959091169490940293909317835560808401518051859493611e4b939085019201906144a5565b5060a08201518051611e679160028401916020909101906144a5565b505050505050565b60606000806000611e8086866124e0565b90925090506000611eaa611e9a60608a0160408b01614ae8565b6101e060808b0160608c016149c8565b90506000611ebb60c08a018a614bbb565b90509050611ed381836000015163ffffffff166124f9565b6020820151611f0390611eec60808c0160608d016149c8565b611efc60608d0160408e01614ae8565b8488612541565b611f0d9086615203565b9450600080611f1c8b8661267a565b9092509050611f2b8288615203565b909b909a5098505050505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615610f585760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260035491925060009182916120669173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009084908761269d565b915091506120768787848461274e565b909550935084156120be5760035473ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040812080548792906120b8908490615203565b90915550505b50505094509492505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff1615158061141a5750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806121b686866124e0565b9150915060006121c78b8b846127c9565b905060006121d58c8c610673565b90506121eb8a826000015163ffffffff166124f9565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b815260040161222e9493929190615434565b602060405180830381865afa15801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f919061547f565b6122799083615203565b915060008061228a8e8e868e6127d6565b90925090506122998285615203565b9e909d509b505050505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161161c565b3360009081526005602052604090205480821115612373576040517f7c83fcf00000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610ac9565b3360009081526005602052604090209190039055565b73ffffffffffffffffffffffffffffffffffffffff83166123ae576118c7828261291a565b6118c7838383611859565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118c7908490612a20565b6000805b82518110156118c757600083828151811061246757612467614b4e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16116124d6576040517fa228a30b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915060010161244a565b6060806124ed8484612b2f565b915091505b9250929050565b8082111561253d576040517ff001cc650000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610ac9565b5050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a429061259c908890889088908890600401615434565b6020604051808303816000875af11580156125bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125df919061547f565b905080156126225773ffffffffffffffffffffffffffffffffffffffff86166000908152600560205260408120805483929061261c908490615203565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b60006060612692600561268c86615526565b85612c1c565b909590945092505050565b60006060863b8083036126c457604080516000808252602082019092529250925050612744565b60008060008761ffff1667ffffffffffffffff8111156126e6576126e6614c20565b6040519080825280601f01601f191660200182016040528015612710576020820181803683370190505b509050600080885160208a018c8f8ff191503d925087831115612731578792505b828152826000602083013e909450925050505b9550959350505050565b60008083158061275f575082516020115b1561276f57506000905080610f58565b600083806020019051810190612785919061547f565b90508515612795578091506127bf565b600060025488116127a8576002546127aa565b875b90508082116127b957816127bb565b805b9350505b5094509492505050565b600061168f848484612d78565b600354600090819073ffffffffffffffffffffffffffffffffffffffff1615610f585760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd42442210000000000000000000000000000000000000000000000000000000017905260035491925060009182916128fe9173ffffffffffffffffffffffffffffffffffffffff16907f00000000000000000000000000000000000000000000000000000000000000009086612df2565b9150915061290e8787848461274e565b94509450505050610f58565b73ffffffffffffffffffffffffffffffffffffffff8216612967576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146129c1576040519150601f19603f3d011682016040523d82523d6000602084013e6129c6565b606091505b50509050806118c7576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610ac9565b6000612a82826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612e9f9092919063ffffffff16565b9050805160001480612aa3575080806020019051810190612aa391906155c4565b6118c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ac9565b606080600080612b3f8686612eae565b915091508051600003612b9757604080516000808252602082019092528391612b8b565b604080518082019091526000815260606020820152815260200190600190039081612b635790505b509350935050506124f2565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612bae5790505090506040518060400160405280600260ff1681526020018381525081600081518110612c0457612c04614b4e565b60209081029190910101529196919550909350505050565b600060606000612c2b856130ef565b90506000612c38866131d5565b805160208201206060880151604089015192935090916000612c5a8284610f61565b905060008951600014612c8b5789600081518110612c7a57612c7a614b4e565b602002602001015160200151612c9c565b604051806020016040528060008152505b90506060612cfc8d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff16815250856131f2565b604051919b509150612d1490899089906020016155e1565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612d6093929190615610565b60405180910390a15050505050505050935093915050565b600080612d858585610f61565b905060008351600014612db65783600081518110612da557612da5614b4e565b602002602001015160200151612dc7565b604051806020016040528060008152505b9050600080612dd5836134de565b91509150612de684888a8585613782565b98975050505050505050565b60006060853b808303612e1957604080516000808252602082019092529250925050610f58565b60008060008761ffff1667ffffffffffffffff811115612e3b57612e3b614c20565b6040519080825280601f01601f191660200182016040528015612e65576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115612e85578792505b828152826000602083013e90999098509650505050505050565b606061168f8484600085613940565b6060806002831015612eef576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260006004820152602401610ac9565b6000612efe600282868861566e565b612f0791615698565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd82016130d8578060005b86831015613064576000612f5260018501858a8c61566e565b612f5b916156e0565b60f81c90506000819003612f9e576040517fe3faa65500000000000000000000000000000000000000000000000000000000815260006004820152602401610ac9565b8160ff16600003612fb157809150612fee565b8160ff168160ff1614612fee57366000612fcd86868c8e61566e565b91509150612fde8989868585613a59565b9099509750859450919250829150505b600184019360009061300590600301868b8d61566e565b61300e91615698565b60f01c90506000819003613051576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101869052602401610ac9565b8060020161ffff16850194505050612f39565b8287146130a0576040517f0df85b3100000000000000000000000000000000000000000000000000000000815260048101849052602401610ac9565b60028711156130d1573660006130b885858b8d61566e565b915091506130c98888858585613a59565b909850965050505b50506130e6565b6130e3828787613bce565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c001516040516020016131bf929190615726565b60006060600080613202856134de565b9150915060008760400151886020015161321c919061574c565b90508060ff1667ffffffffffffffff81111561323a5761323a614c20565b604051908082528060200260200182016040528015613263578160200160208202803683370190505b50935060005b8160ff168160ff1610156134d1576000896020015160ff168260ff16106132be5760a08a015160208b015161329e90846153d2565b60ff16815181106132b1576132b1614b4e565b60200260200101516132e0565b89608001518260ff16815181106132d7576132d7614b4e565b60200260200101515b60408051602081019091526000808252919250905b855181101561334d578360ff1686828151811061331457613314614b4e565b602002602001015160ff16036133455786818151811061333657613336614b4e565b6020026020010151915061334d565b6001016132f5565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d7906133a2908d908590600401615765565b6020604051808303816000875af11580156133c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e5919061547f565b878460ff16815181106133fa576133fa614b4e565b6020026020010181815250506000878460ff168151811061341d5761341d614b4e565b602002602001015111156134c757868360ff168151811061344057613440614b4e565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134959190615203565b92505081905550868360ff16815181106134b1576134b1614b4e565b6020026020010151886134c49190615203565b97505b5050600101613269565b5050505094509492505050565b60608082516000036134ef57915091565b60006134fa84613e4d565b90508060ff166001036135ac5760408051600180825281830190925290816020015b606081526020019060019003908161351c579050509250838360008151811061354757613547614b4e565b60209081029190910101526040805160018082528183019092529081602001602082028036833701905050915061357f846003613f72565b8260008151811061359257613592614b4e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff8111156135c8576135c8614c20565b6040519080825280602002602001820160405280156135f1578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561361057613610614c20565b60405190808252806020026020018201604052801561364357816020015b606081526020019060019003908161362e5790505b50925060008060ff5b86518310156136f75760019092019160006136678885613ff2565b600294909401939050600061367c8986613f72565b90508260ff1660ff03613691578092506136e8565b8260ff168160ff16146136e8577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8486030160006136d08b8784614072565b90506136de8a8a87846141ec565b5093909301929150815b5061ffff16929092019161364c565b8183036000613707898584614072565b9050613715888885846141ec565b60005b8660ff168160ff16101561377657878160ff168151811061373b5761373b614b4e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff169052600101613718565b50505050505050915091565b60008086604001518760200151613799919061574c565b905060005b8160ff168160ff161015613935576000886020015160ff168260ff16106137f35760a089015160208a01516137d390846153d2565b60ff16815181106137e6576137e6614b4e565b6020026020010151613815565b88608001518260ff168151811061380c5761380c614b4e565b60200260200101515b60408051602081019091526000808252919250905b8651811015613882578360ff1687828151811061384957613849614b4e565b602002602001015160ff160361387a5787818151811061386b5761386b614b4e565b60200260200101519150613882565b60010161382a565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac916138db918d918d9087906004016157e3565b602060405180830381865afa1580156138f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391c919061547f565b6139269086615203565b9450505080600101905061379e565b505095945050505050565b6060824710156139d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ac9565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516139fb919061582e565b60006040518083038185875af1925050503d8060008114613a38576040519150601f19603f3d011682016040523d82523d6000602084013e613a3d565b606091505b5091509150613a4e8783838761431b565b979650505050505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613af457865115613ab657868484604051602001613aa293929190615840565b604051602081830303815290604052613aed565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613bc3565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613b8c57855115613b4e57858484604051602001613b3a93929190615840565b604051602081830303815290604052613b85565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613bc3565b6040517fe3faa65500000000000000000000000000000000000000000000000000000000815260ff86166004820152602401610ac9565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613cf45760228214613c35576040517f9bebe0e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613c56613c4860226002868861566e565b613c5191615868565b6143bb565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b16602482015290915060340160405160208183030381529060405291505061141a565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff851601613e1557604282111580613d2f5750606282115b15613d66576040517f2b2e8c3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d79613c4860226002868861566e565b90506000613d8e613c4860426022878961566e565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe8501613dc2866042818a61566e565b613dcb91615868565b60405160086020938403029190911c9250613dfc916001916011918391889183916031916002918b918b91016158a4565b604051602081830303815290604052935050505061141a565b6040517f51458e6f00000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401610ac9565b600080805b8351821015613f2e576001909101906000613e6d8584613ff2565b905060028301925060028161ffff161015613eb7576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101849052602401610ac9565b6000613ec38685613f72565b90508060ff1660ff03613f02576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b8316613f1f5760019485019460ff82161b831792505b5061ffff169190910190613e52565b83518214613f6b576040517f9af41d3300000000000000000000000000000000000000000000000000000000815260048101839052602401610ac9565b5050919050565b6000613f7f826001615203565b83511015613fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610ac9565b50016001015190565b6000613fff826002615203565b83511015614069576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610ac9565b50016002015190565b60608161408081601f615203565b10156140e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610ac9565b6140f28284615203565b8451101561415c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610ac9565b60608215801561417b57604051915060008252602082016040526141e3565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156141b457805183526020928301920161419c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff03614229576040517fa8384fc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061423683600161574c565b905060005b8451811015611e6757600085828151811061425857614258614b4e565b602002602001015190508060ff168360ff16036142cd5786828151811061428157614281614b4e565b60200260200101518460405160200161429b9291906155e1565b6040516020818303038152906040528783815181106142bc576142bc614b4e565b602002602001018190525050611e67565b8060ff1660000361431257828683815181106142eb576142eb614b4e565b602002602001019060ff16908160ff1681525050838783815181106142bc576142bc614b4e565b5060010161423b565b606083156143b15782516000036143aa5773ffffffffffffffffffffffffffffffffffffffff85163b6143aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac9565b508161168f565b61168f8383614461565b60006fffffffffffffffffffffffffffffffff82111561445d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610ac9565b5090565b8151156144715781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac99190614a30565b82805482825590600052602060002090810192821561451f579160200282015b8281111561451f57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906144c5565b5061445d9291505b8082111561445d5760008155600101614527565b60006020828403121561454d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146116a857600080fd5b80356145aa8161457d565b919050565b63ffffffff811681146116a857600080fd5b80356145aa816145af565b600080604083850312156145df57600080fd5b82356145ea8161457d565b915060208301356145fa816145af565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff16908201526040810161066d565b6020810160038310614673577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060006060848603121561468e57600080fd5b83356146998161457d565b925060208401356146a98161457d565b929592945050506040919091013590565b60008083601f8401126146cc57600080fd5b50813567ffffffffffffffff8111156146e457600080fd5b6020830191508360208260051b85010111156124f257600080fd5b60008060006040848603121561471457600080fd5b833561471f8161457d565b9250602084013567ffffffffffffffff81111561473b57600080fd5b614747868287016146ba565b9497909650939450505050565b6000806020838503121561476757600080fd5b823567ffffffffffffffff81111561477e57600080fd5b61478a858286016146ba565b90969095509350505050565b60008151808452602080850194506020840160005b838110156147dd57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016147ab565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c0608085015261483860c0850182614796565b905060a083015184820360a08601526148518282614796565b95945050505050565b60208152600061141a60208301846147e8565b80151581146116a857600080fd5b80356145aa8161486d565b6000806000806060858703121561489c57600080fd5b843567ffffffffffffffff808211156148b457600080fd5b9086019060e082890312156148c857600080fd5b909450602086013590808211156148de57600080fd5b818701915087601f8301126148f257600080fd5b81358181111561490157600080fd5b88602082850101111561491357600080fd5b60208301955080945050505061492b6040860161487b565b905092959194509250565b60005b83811015614951578181015183820152602001614939565b50506000910152565b60008151808452614972816020860160208601614936565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b825181526020808401519082015260606040820152600061168f606083018461495a565b6000602082840312156149da57600080fd5b813561141a816145af565b6000806000606084860312156149fa57600080fd5b8335614a05816145af565b92506020840135614a158161457d565b91506040840135614a25816145af565b809150509250925092565b60208152600061141a602083018461495a565b60008060208385031215614a5657600080fd5b823567ffffffffffffffff80821115614a6e57600080fd5b818501915085601f830112614a8257600080fd5b813581811115614a9157600080fd5b866020606083028501011115614aa657600080fd5b60209290920196919550909350505050565b600060208284031215614aca57600080fd5b5035919050565b81518152602080830151908201526040810161066d565b600060208284031215614afa57600080fd5b813561141a8161457d565b60008060408385031215614b1857600080fd5b8235614b238161457d565b946020939093013593505050565b600060208284031215614b4357600080fd5b815161141a8161457d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614bb157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614bf057600080fd5b83018035915067ffffffffffffffff821115614c0b57600080fd5b6020019150368190038213156124f257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614c7257614c72614c20565b60405290565b60405160e0810167ffffffffffffffff81118282101715614c7257614c72614c20565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ce257614ce2614c20565b604052919050565b600060408284031215614cfc57600080fd5b6040516040810181811067ffffffffffffffff82111715614d1f57614d1f614c20565b6040528235614d2d816145af565b81526020830135614d3d8161457d565b60208201529392505050565b803567ffffffffffffffff811681146145aa57600080fd5b803560ff811681146145aa57600080fd5b600082601f830112614d8357600080fd5b8135602067ffffffffffffffff821115614d9f57614d9f614c20565b8160051b614dae828201614c9b565b9283528481018201928281019087851115614dc857600080fd5b83870192505b84831015613a4e578235614de18161457d565b82529183019190830190614dce565b600060c08284031215614e0257600080fd5b614e0a614c4f565b9050614e1582614d49565b8152614e2360208301614d61565b6020820152614e3460408301614d61565b6040820152614e4560608301614d61565b6060820152608082013567ffffffffffffffff80821115614e6557600080fd5b614e7185838601614d72565b608084015260a0840135915080821115614e8a57600080fd5b50614e9784828501614d72565b60a08301525092915050565b600060208284031215614eb557600080fd5b813567ffffffffffffffff811115614ecc57600080fd5b61168f84828501614df0565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614bb157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614bb157600080fd5b600060208284031215614f5257600080fd5b61141a82614d61565b600060208284031215614f6d57600080fd5b61141a82614d49565b600061066d3683614df0565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614fb757600080fd5b830160208101925035905067ffffffffffffffff811115614fd757600080fd5b8060051b36038213156124f257600080fd5b8183526000602080850194508260005b858110156147dd57813561500c8161457d565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614ff9565b60208082528181018390526000906040808401600586901b8501820187855b888110156151c6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c36030181126150b557600080fd5b8b0180356150c2816145af565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff410181126150ff57600080fd5b8589018890520167ffffffffffffffff61511882614d49565b1687860152615128888201614d61565b606060ff8083168289015261513e8a8501614d61565b92506080818416818a0152615154838601614d61565b935060a09250818416838a015261516d81860186614f82565b60c08b81015294509150615188905061010089018483614fe9565b92505061519781840184614f82565b93509050838783030160e08801526151b0828483614fe9565b978a019796505050928701925050600101615053565b509098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561066d5761066d6151d4565b8135615221816145af565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000821617835560208401356152618161457d565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b8781101561532e5781356152d7816145af565b63ffffffff908116845282860135906152ef826145af565b1683860152818401356153018161457d565b73ffffffffffffffffffffffffffffffffffffffff168385015260609283019291909101906001016152c4565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff831660208201526080810161168f6040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff8316602082015260606040820152600061485160608301846147e8565b60ff828116828216039081111561066d5761066d6151d4565b600060ff831680615425577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000615475608083018461495a565b9695505050505050565b60006020828403121561549157600080fd5b5051919050565b600082601f8301126154a957600080fd5b813567ffffffffffffffff8111156154c3576154c3614c20565b6154f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614c9b565b81815284602083860101111561550957600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0823603121561553857600080fd5b615540614c78565b61554983614d49565b8152615557602084016145c1565b60208201526155686040840161459f565b6040820152615579606084016145c1565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff8111156155ac57600080fd5b6155b836828601615498565b60c08301525092915050565b6000602082840312156155d657600080fd5b815161141a8161486d565b600083516155f3818460208801614936565b835190830190615607818360208801614936565b01949350505050565b6060815260006156236060830186614796565b602083820360208501526156378287614796565b84810360408601528551808252602080880194509091019060005b818110156151c657845183529383019391830191600101615652565b6000808585111561567e57600080fd5b8386111561568b57600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156156d85780818660020360031b1b83161692505b505092915050565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156156d85760019490940360031b84901b1690921692915050565b8281526000825161573e816020850160208701614936565b919091016020019392505050565b60ff818116838216019081111561066d5761066d6151d4565b6040815263ffffffff83511660408201526000602084015160a0606084015261579160e084018261495a565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c08401528281036020840152614851818561495a565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201526000615475608083018461495a565b60008251614bb1818460208701614936565b60008451615852818460208901614936565b8201838582376000930192835250909392505050565b8035602083101561066d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615985601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea2646970667358221220bd7db246a7db70b56892058d4a1838fd89bd9bdcaad8a4d46f61728b0f2ff18e64736f6c63430008160033";
42525
42539
  static readonly abi: readonly [{
42526
42540
  readonly inputs: readonly [{
42527
42541
  readonly internalType: "address";
@@ -43507,7 +43521,7 @@ declare class LzExecutor__factory extends ContractFactory {
43507
43521
  }): TransactionRequest;
43508
43522
  attach(address: string): LzExecutor;
43509
43523
  connect(signer: Signer): LzExecutor__factory;
43510
- static readonly bytecode = "0x60e06040523480156200001157600080fd5b50604051620010a7380380620010a7833981016040819052620000349162000135565b6200003f33620000c8565b6001600160a01b03808316608052811660a08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b691906200016d565b63ffffffff1660c052506200019c9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013057600080fd5b919050565b600080604083850312156200014957600080fd5b620001548362000118565b9150620001646020840162000118565b90509250929050565b6000602082840312156200018057600080fd5b815163ffffffff811681146200019557600080fd5b9392505050565b60805160a05160c051610eb9620001ee6000396000818161012701526103bd01526000818160b40152818161023301526106ec01526000818161017001528181610331015261036d0152610eb96000f3fe60806040526004361061007b5760003560e01c8063843c7b0e1161004e578063843c7b0e1461015e5780638da5cb5b14610192578063dcfdeb60146101bd578063f2fde38b146101d057600080fd5b806307b18bde146100805780635e280f11146100a2578063715018a6146101005780637260753714610115575b600080fd5b34801561008c57600080fd5b506100a061009b366004610a8e565b6101f0565b005b3480156100ae57600080fd5b506100d67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561010c57600080fd5b506100a0610206565b34801561012157600080fd5b506101497f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100f7565b34801561016a57600080fd5b506100d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561019e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100d6565b6100a06101cb366004610ab8565b61021a565b3480156101dc57600080fd5b506100a06101eb366004610b66565b6107a8565b6101f8610864565b61020282826108e5565b5050565b61020e610864565b61021860006109f0565b565b600073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016634b4b2efb856102696080820160608301610b66565b6040518363ffffffff1660e01b8152600401610286929190610bee565b602060405180830381865afa1580156102a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c79190610c2c565b905060028160028111156102dd576102dd610c49565b03610314576040517f68f46c4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181600281111561032857610328610c49565b146106885760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615610391577f0000000000000000000000000000000000000000000000000000000000000000610393565b855b9050600060016103a96060880160408901610c78565b6103b66020890189610c93565b60208901357f00000000000000000000000000000000000000000000000000000000000000006103ec60808c0160608d01610b66565b60405160f89690961b7fff0000000000000000000000000000000000000000000000000000000000000016602087015260c09490941b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e092831b7fffffffff000000000000000000000000000000000000000000000000000000009081166029870152602d86019290925290911b16604d83015273ffffffffffffffffffffffffffffffffffffffff166051820152607101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600060808701356104ea60a0890189610cae565b6040516020016104fc93929190610d1a565b60405160208183030381529060405280519060200120905060008373ffffffffffffffffffffffffffffffffffffffff166327d12cd984846040518363ffffffff1660e01b8152600401610551929190610d34565b602060405180830381865afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190610c2c565b905060018160028111156105a8576105a8610c49565b03610638576040517f0894edf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630894edf1906106019086908690600401610d34565b600060405180830381600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b50505050610683565b600081600281111561064c5761064c610c49565b03610683576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505b60005b828110156106d457368484838181106106a6576106a6610da7565b6040029190910191506106cb90506106c16020830183610b66565b82602001356108e5565b5060010161068b565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016630c0c389e60e08601356101008701358761072d6080820160608301610b66565b60808a013561073f60a08c018c610cae565b61074c60c08e018e610cae565b6040518a63ffffffff1660e01b815260040161076e9796959493929190610e1f565b6000604051808303818589803b15801561078757600080fd5b5088f115801561079b573d6000803e3d6000fd5b5050505050505050505050565b6107b0610864565b73ffffffffffffffffffffffffffffffffffffffff8116610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610861816109f0565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161084f565b73ffffffffffffffffffffffffffffffffffffffff8216610932576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461098c576040519150601f19603f3d011682016040523d82523d6000602084013e610991565b606091505b50509050806109eb576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161084f565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a8957600080fd5b919050565b60008060408385031215610aa157600080fd5b610aaa83610a65565b946020939093013593505050565b60008060008060608587031215610ace57600080fd5b610ad785610a65565b9350602085013567ffffffffffffffff80821115610af457600080fd5b908601906101208289031215610b0957600080fd5b90935060408601359080821115610b1f57600080fd5b818701915087601f830112610b3357600080fd5b813581811115610b4257600080fd5b8860208260061b8501011115610b5757600080fd5b95989497505060200194505050565b600060208284031215610b7857600080fd5b610b8182610a65565b9392505050565b803563ffffffff81168114610a8957600080fd5b803567ffffffffffffffff81168114610a8957600080fd5b63ffffffff610bc282610b88565b1682526020810135602083015267ffffffffffffffff610be460408301610b9c565b1660408301525050565b60808101610bfc8285610bb4565b73ffffffffffffffffffffffffffffffffffffffff831660608301529392505050565b6003811061086157600080fd5b600060208284031215610c3e57600080fd5b8151610b8181610c1f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610c8a57600080fd5b610b8182610b9c565b600060208284031215610ca557600080fd5b610b8182610b88565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ce357600080fd5b83018035915067ffffffffffffffff821115610cfe57600080fd5b602001915036819003821315610d1357600080fd5b9250929050565b838152818360208301376000910160200190815292915050565b604081526000835180604084015260005b81811015610d625760208187018101516060868401015201610d45565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b610e298189610bb4565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000610e6260e083018688610dd6565b82810360c0840152610e75818587610dd6565b9a995050505050505050505056fea2646970667358221220fff46463af21c7da5a035758d52eec4cb87d5a2ce78a33467f031c424cf6a4dd64736f6c63430008160033";
43524
+ static readonly bytecode = "0x60e06040523480156200001157600080fd5b50604051620010a7380380620010a7833981016040819052620000349162000135565b6200003f33620000c8565b6001600160a01b03808316608052811660a08190526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa15801562000090573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b691906200016d565b63ffffffff1660c052506200019c9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013057600080fd5b919050565b600080604083850312156200014957600080fd5b620001548362000118565b9150620001646020840162000118565b90509250929050565b6000602082840312156200018057600080fd5b815163ffffffff811681146200019557600080fd5b9392505050565b60805160a05160c051610eb9620001ee6000396000818161012701526103bd01526000818160b40152818161023301526106ec01526000818161017001528181610331015261036d0152610eb96000f3fe60806040526004361061007b5760003560e01c8063843c7b0e1161004e578063843c7b0e1461015e5780638da5cb5b14610192578063dcfdeb60146101bd578063f2fde38b146101d057600080fd5b806307b18bde146100805780635e280f11146100a2578063715018a6146101005780637260753714610115575b600080fd5b34801561008c57600080fd5b506100a061009b366004610a8e565b6101f0565b005b3480156100ae57600080fd5b506100d67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561010c57600080fd5b506100a0610206565b34801561012157600080fd5b506101497f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100f7565b34801561016a57600080fd5b506100d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561019e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100d6565b6100a06101cb366004610ab8565b61021a565b3480156101dc57600080fd5b506100a06101eb366004610b66565b6107a8565b6101f8610864565b61020282826108e5565b5050565b61020e610864565b61021860006109f0565b565b600073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016634b4b2efb856102696080820160608301610b66565b6040518363ffffffff1660e01b8152600401610286929190610bee565b602060405180830381865afa1580156102a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c79190610c2c565b905060028160028111156102dd576102dd610c49565b03610314576040517f68f46c4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181600281111561032857610328610c49565b146106885760007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615610391577f0000000000000000000000000000000000000000000000000000000000000000610393565b855b9050600060016103a96060880160408901610c78565b6103b66020890189610c93565b60208901357f00000000000000000000000000000000000000000000000000000000000000006103ec60808c0160608d01610b66565b60405160f89690961b7fff0000000000000000000000000000000000000000000000000000000000000016602087015260c09490941b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e092831b7fffffffff000000000000000000000000000000000000000000000000000000009081166029870152602d86019290925290911b16604d83015273ffffffffffffffffffffffffffffffffffffffff166051820152607101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529050600060808701356104ea60a0890189610cae565b6040516020016104fc93929190610d1a565b60405160208183030381529060405280519060200120905060008373ffffffffffffffffffffffffffffffffffffffff166327d12cd984846040518363ffffffff1660e01b8152600401610551929190610d34565b602060405180830381865afa15801561056e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105929190610c2c565b905060018160028111156105a8576105a8610c49565b03610638576040517f0894edf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851690630894edf1906106019086908690600401610d34565b600060405180830381600087803b15801561061b57600080fd5b505af115801561062f573d6000803e3d6000fd5b50505050610683565b600081600281111561064c5761064c610c49565b03610683576040517f692c93cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505b60005b828110156106d457368484838181106106a6576106a6610da7565b6040029190910191506106cb90506106c16020830183610b66565b82602001356108e5565b5060010161068b565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016630c0c389e60e08601356101008701358761072d6080820160608301610b66565b60808a013561073f60a08c018c610cae565b61074c60c08e018e610cae565b6040518a63ffffffff1660e01b815260040161076e9796959493929190610e1f565b6000604051808303818589803b15801561078757600080fd5b5088f115801561079b573d6000803e3d6000fd5b5050505050505050505050565b6107b0610864565b73ffffffffffffffffffffffffffffffffffffffff8116610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610861816109f0565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161084f565b73ffffffffffffffffffffffffffffffffffffffff8216610932576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461098c576040519150601f19603f3d011682016040523d82523d6000602084013e610991565b606091505b50509050806109eb576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810183905260440161084f565b505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a8957600080fd5b919050565b60008060408385031215610aa157600080fd5b610aaa83610a65565b946020939093013593505050565b60008060008060608587031215610ace57600080fd5b610ad785610a65565b9350602085013567ffffffffffffffff80821115610af457600080fd5b908601906101208289031215610b0957600080fd5b90935060408601359080821115610b1f57600080fd5b818701915087601f830112610b3357600080fd5b813581811115610b4257600080fd5b8860208260061b8501011115610b5757600080fd5b95989497505060200194505050565b600060208284031215610b7857600080fd5b610b8182610a65565b9392505050565b803563ffffffff81168114610a8957600080fd5b803567ffffffffffffffff81168114610a8957600080fd5b63ffffffff610bc282610b88565b1682526020810135602083015267ffffffffffffffff610be460408301610b9c565b1660408301525050565b60808101610bfc8285610bb4565b73ffffffffffffffffffffffffffffffffffffffff831660608301529392505050565b6003811061086157600080fd5b600060208284031215610c3e57600080fd5b8151610b8181610c1f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600060208284031215610c8a57600080fd5b610b8182610b9c565b600060208284031215610ca557600080fd5b610b8182610b88565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610ce357600080fd5b83018035915067ffffffffffffffff821115610cfe57600080fd5b602001915036819003821315610d1357600080fd5b9250929050565b838152818360208301376000910160200190815292915050565b604081526000835180604084015260005b81811015610d625760208187018101516060868401015201610d45565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b610e298189610bb4565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000610e6260e083018688610dd6565b82810360c0840152610e75818587610dd6565b9a995050505050505050505056fea26469706673582212206df5499e040aad07956ad8c2299c668e5610587c4f1225748258cf3cff090b7364736f6c63430008160033";
43511
43525
  static readonly abi: readonly [{
43512
43526
  readonly inputs: readonly [{
43513
43527
  readonly internalType: "address";
@@ -45456,7 +45470,7 @@ declare class EndpointV2__factory extends ContractFactory {
45456
45470
  }): TransactionRequest;
45457
45471
  attach(address: string): EndpointV2;
45458
45472
  connect(signer: Signer): EndpointV2__factory;
45459
- static readonly bytecode = "0x60c06040526001600d553480156200001657600080fd5b5060405162006615380380620066158339810160408190526200003991620002d6565b816200004533620000a6565b63ffffffff166080526040516200005c90620002c8565b604051809103906000f08015801562000079573d6000803e3d6000fd5b506001600160a01b031660a08190526200009390620000f6565b6200009e81620000a6565b505062000353565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010062000267565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000328565b62000190576040516331d5783360e11b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620001cb57604051630ea075bf60e21b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5910160405180910390a150565b6000546001600160a01b03163314620002c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b61028f806200638683390190565b60008060408385031215620002ea57600080fd5b825163ffffffff81168114620002ff57600080fd5b60208401519092506001600160a01b03811681146200031d57600080fd5b809150509250929050565b6000602082840312156200033b57600080fd5b815180151581146200034c57600080fd5b9392505050565b60805160a051615fea6200039c60003960006107de01526000818161055f01528181612fcd015281816139160152818161397d0152818161422001526142870152615fea6000f3fe6080604052600436106103605760003560e01c80639132e5c3116101c6578063ca5eb5e1116100f7578063e1758bd811610095578063e8964e811161006f578063e8964e8114610c0f578063ef667aa114610c2f578063f2fde38b14610c7a578063f64be4c714610c9a57600080fd5b8063e1758bd814610bbb578063e1e3a7df14610bcf578063e4fe1d9414610bef57600080fd5b8063d70b8902116100d1578063d70b890214610af2578063dc706a6214610b12578063dc93c8a214610b42578063ddc28c5814610b8e57600080fd5b8063ca5eb5e114610a5b578063cb5026b914610abd578063d4b4ec8f14610ad257600080fd5b8063a7229fd911610164578063aafea3121161013e578063aafea312146109b4578063b96a277f146109d4578063c28e0eed146109f4578063c9fc7bcd14610a1457600080fd5b8063a7229fd914610954578063a825d74714610974578063aafe5e071461099457600080fd5b80639c6d7340116101a05780639c6d7340146108ac5780639d7f9775146108f4578063a0dd43fc14610914578063a718531b1461093457600080fd5b80639132e5c31461085757806391d20fa1146108795780639535ff301461088c57600080fd5b8063587cde1e116102a05780636e83f5bb1161023e578063733180911161021857806373318091146107cc57806379624ca9146108005780637cb59012146108195780638da5cb5b1461083957600080fd5b80636e83f5bb146107225780636f50a80314610781578063715018a6146107b757600080fd5b8063697fe6b61161027a578063697fe6b6146106a25780636a14d715146106c25780636bf73fa3146106e25780636dbd9f901461070257600080fd5b8063587cde1e146105c35780635b17bb70146106115780636750cd4c1461067257600080fd5b80632baf0be71161030d578063402f8468116102e7578063402f8468146104ee57806340f806831461052d578063416ecebf1461054d5780634b4b2efb1461059657600080fd5b80632baf0be7146104455780632e80fbf31461048757806335d330b0146104a757600080fd5b80632637a4501161033e5780632637a450146103d85780632a56c1b0146103f85780632b3197b91461041857600080fd5b80630c0c389e1461036557806314f651a91461037a578063183c834f146103b8575b600080fd5b610378610373366004614d66565b610cd0565b005b34801561038657600080fd5b5061038f610de7565b6040805163ffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b3480156103c457600080fd5b506103786103d3366004614e16565b610e19565b6103eb6103e6366004614e61565b6111a4565b6040516103af9190614eb4565b34801561040457600080fd5b50610378610413366004614ef7565b61130d565b34801561042457600080fd5b50610438610433366004614f67565b6113cb565b6040516103af9190615029565b34801561045157600080fd5b506104797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6040519081526020016103af565b34801561049357600080fd5b506103786104a2366004615054565b6114e6565b3480156104b357600080fd5b506104796104c23660046150bb565b600c60209081526000948552604080862082529385528385208152918452828420909152825290205481565b3480156104fa57600080fd5b5061050e6105093660046150fd565b6116bd565b604080516001600160a01b0390931683529015156020830152016103af565b34801561053957600080fd5b50610378610548366004615054565b611754565b34801561055957600080fd5b506105817f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103af565b3480156105a257600080fd5b506105b66105b1366004615127565b611904565b6040516103af9190615181565b3480156105cf57600080fd5b506105f96105de3660046151c2565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103af565b34801561061d57600080fd5b5061065961062c3660046151dd565b600160209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103af565b34801561067e57600080fd5b5061069261068d366004615219565b611aa8565b60405190151581526020016103af565b3480156106ae57600080fd5b506103786106bd366004615234565b611af4565b3480156106ce57600080fd5b506103786106dd366004614e16565b611b69565b3480156106ee57600080fd5b506103786106fd366004615332565b612073565b34801561070e57600080fd5b5061037861071d366004615416565b6120dd565b34801561072e57600080fd5b5061076261073d366004615219565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016103af565b34801561078d57600080fd5b506105f961079c366004615219565b600a602052600090815260409020546001600160a01b031681565b3480156107c357600080fd5b506103786121b1565b3480156107d857600080fd5b506105f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561080c57600080fd5b50600d5460011415610692565b34801561082557600080fd5b506103786108343660046154a7565b6121c5565b34801561084557600080fd5b506000546001600160a01b03166105f9565b34801561086357600080fd5b5061086c6122ca565b6040516103af91906154f9565b610378610887366004615546565b61232c565b34801561089857600080fd5b506103786108a73660046155f1565b6124ee565b3480156108b857600080fd5b506106596108c73660046151dd565b600360209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b34801561090057600080fd5b5061069261090f3660046155f1565b6127f6565b34801561092057600080fd5b5061065961092f3660046151dd565b6128d2565b34801561094057600080fd5b5061037861094f366004615634565b61296b565b34801561096057600080fd5b5061037861096f366004615660565b612d7d565b34801561098057600080fd5b5061037861098f36600461567e565b612d95565b3480156109a057600080fd5b506104796109af3660046151dd565b612f2d565b3480156109c057600080fd5b506103786109cf3660046156bb565b61303c565b3480156109e057600080fd5b506105f96109ef3660046150fd565b6132fc565b348015610a0057600080fd5b50610378610a0f3660046151c2565b613384565b348015610a2057600080fd5b50610479610a2f3660046156d7565b600260209081526000948552604080862082529385528385208152918452828420909152825290205481565b348015610a6757600080fd5b50610378610a763660046151c2565b336000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b348015610ac957600080fd5b50610479600081565b348015610ade57600080fd5b50610378610aed366004615634565b6133f9565b348015610afe57600080fd5b50610378610b0d3660046156d7565b6136fd565b348015610b1e57600080fd5b50610692610b2d3660046151c2565b60056020526000908152604090205460ff1681565b348015610b4e57600080fd5b50610692610b5d3660046150fd565b6001600160a01b03918216600090815260066020908152604080832063ffffffff9490941683529290522054161590565b348015610b9a57600080fd5b50610bae610ba9366004614e61565b613820565b6040516103af9190615719565b348015610bc757600080fd5b5060006105f9565b348015610bdb57600080fd5b50610692610bea366004615730565b613b4b565b348015610bfb57600080fd5b50600e546105f9906001600160a01b031681565b348015610c1b57600080fd5b50610378610c2a3660046151c2565b613c19565b348015610c3b57600080fd5b50610762610c4a3660046150fd565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b348015610c8657600080fd5b50610378610c953660046151c2565b613e17565b348015610ca657600080fd5b506105f9610cb5366004615219565b6009602052600090815260409020546001600160a01b031681565b610d1f86610ce160208a018a615219565b60208a0135610cf660608c0160408d0161577c565b898989604051602001610d0b93929190615797565b604051602081830303815290604052613ec1565b506040517f13137d650000000000000000000000000000000000000000000000000000000081526001600160a01b038716906313137d65903490610d73908b908a908a908a9033908b908b90600401615834565b6000604051808303818588803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b50505050507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048787604051610dd692919061588b565b60405180910390a150505050505050565b600080610df7600d546001141590565b610e0357600080610e11565b610e11600d5460a081901c91565b915091509091565b6001600160a01b038216600090815260056020526040902054829060ff16610e6d576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615610f29576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ebd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee191906158af565b6002811115610ef257610ef2615152565b03610f29576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615610ff7576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906158de565b610ff7576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61100088614104565b600061100c89896116bd565b9150508015611047576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856000036110a7576001600160a01b038916600090815260086020908152604080832063ffffffff8c168452909152812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001015561113e565b4386116110e0576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600090815260086020908152604080832063ffffffff8d168452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169189169190911781556001018690555b604080516001600160a01b03808c16825263ffffffff8b166020830152891691810191909152606081018790527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928906080015b60405180910390a1505050505050505050565b6111ac614cad565b6111b96020840184615219565b336001600d54146111f6576040517f9633fed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffff000000000000000000000000000000000000000060a083811b919091166001600160a01b03831617600d55611235908601608087016158fb565b801561124a5750600e546001600160a01b0316155b15611281576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061128e338861416e565b91509150600061129b3490565b905060006112b76112b260a08b0160808c016158fb565b614452565b90506112c884604001518383614520565b600e546040850151602001516112ea916001600160a01b03169083868c614587565b6040840151516112fc9083858b6145b4565b50506001600d555095945050505050565b61131685614104565b600083838360405160200161132d93929190615797565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506113898661136e6020880188615219565b602088013561138360608a0160408b0161577c565b85613ec1565b507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca0485876040516113bb92919061588b565b60405180910390a1505050505050565b6001600160a01b038316600090815260056020526040902054606090849060ff16611422576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9c33abf700000000000000000000000000000000000000000000000000000000815263ffffffff80861660048301526001600160a01b0388811660248401529085166044830152861690639c33abf790606401600060405180830381865afa158015611496573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114dc91908101906159e3565b9695505050505050565b6114ef85614104565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff8616845290915290205481811461157b576040517fe4bb0ca100000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416118015906115c8575080155b1561160b576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611572565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff8916808652908452938290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905581519081529182018890528101929092526060820152608081018390527faf0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb552929060a0016113bb565b6001600160a01b03808316600090815260076020908152604080832063ffffffff86168452909152812054909116908161174d5763ffffffff83166000908152600a60205260409020546001600160a01b0316915081611749576040517ffbc6a95a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060015b9250929050565b61175d85614104565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff861684529091529020548181146117e4576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401611572565b80158061182f57506001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416115b15611872576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611572565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff89168086529084528285209490945581519081529182018890528101929092526060820152608081018390527f7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e9060a0016113bb565b6001600160a01b038116600090815260026020908152604082208291829061192e90870187615219565b63ffffffff1663ffffffff1681526020019081526020016000206000856020013581526020019081526020016000206000856040016020810190611972919061577c565b67ffffffffffffffff168152602081019190915260400160002054905080158015611a1157506001600160a01b0383166000908152600160209081526040822091906119c090870187615219565b63ffffffff16815260208082019290925260409081016000908120878401358252909252908190205467ffffffffffffffff1690611a04906060870190870161577c565b67ffffffffffffffff1611155b15611a20576002915050611aa2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114801590611a8d5750611a6683611a5c6020870187615219565b86602001356128d2565b67ffffffffffffffff16611a80606086016040870161577c565b67ffffffffffffffff1611155b15611a9c576001915050611aa2565b60009150505b92915050565b63ffffffff81166000908152600960205260408120546001600160a01b031615801590611aa257505063ffffffff166000908152600a60205260409020546001600160a01b0316151590565b336001600160a01b03168b6001600160a01b03168d6001600160a01b03167f8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b98d8d8d8d8d8d8d8d8d8d604051611b539a99989796959493929190615a18565b60405180910390a4505050505050505050505050565b6001600160a01b038216600090815260056020526040902054829060ff16158015611b9c57506001600160a01b03811615155b15611bd3576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615611c8f576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4791906158af565b6002811115611c5857611c58615152565b03611c8f576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615611d5d576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015611d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2791906158de565b611d5d576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d6688614104565b6001600160a01b03808916600090815260076020908152604080832063ffffffff8c16845290915290205481169087168103611dce576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600081815260076020908152604080832063ffffffff8e168085529083529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168d87169081179091558151948552918401929092529284169082015260608101919091527fc0833c35bb1d0beadca36bed54c7098819e109542a6d233d33c7c2039c8ec9aa9060800160405180910390a18515611fc8576001600160a01b0381161580611e9357506001600160a01b038716155b15611eca576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280836001600160a01b031681526020018843611ef29190615ab0565b90526001600160a01b03808c16600090815260086020908152604080832063ffffffff8f1684528252918290208451815494167fffffffffffffffffffffffff00000000000000000000000000000000000000009094169390931783558301516001909201829055519192507f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611fba918d918d9187916001600160a01b03948516815263ffffffff93909316602084015292166040820152606081019190915260800190565b60405180910390a150612068565b6001600160a01b03898116600081815260086020908152604080832063ffffffff8e1680855290835281842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001018490558151948552918401919091529284169282019290925260608101919091527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092890608001611191565b505050505050505050565b336001600160a01b03168a6001600160a01b03167f7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c8d8c8c8c8c8c8c8c8c8c6040516120c89a99989796959493929190615ac3565b60405180910390a35050505050505050505050565b6001600160a01b038316600090815260056020526040902054839060ff16612131576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61213a85614104565b6040517f20efd7220000000000000000000000000000000000000000000000000000000081526001600160a01b038516906320efd7229061218390889087908790600401615b22565b600060405180830381600087803b15801561219d57600080fd5b505af1158015612068573d6000803e3d6000fd5b6121b96145de565b6121c36000614652565b565b336000908152600c602090815260408083206001600160a01b03891684528252808320878452825280832061ffff8716845290915290205415612234576040517f895fdbee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181604051612244929190615c73565b60408051918290038220336000818152600c60209081528482206001600160a01b038c16835281528482208a8352815284822061ffff8a168352905292909220557f3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc1916122bb919088908890889088908890615c83565b60405180910390a15050505050565b6060600480548060200260200160405190810160405280929190818152602001828054801561232257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612304575b5050505050905090565b6001600160a01b038089166000908152600c60209081526040808320938b168352928152828220898352815282822061ffff8916835290528181205491516123779087908790615c73565b604051809103902090508082146123c4576040517f9e3e05830000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611572565b6001600160a01b03808b166000908152600c60209081526040808320938d168084529382528083208c8452825280832061ffff8c1684529091529081902060019055517fd0a1026000000000000000000000000000000000000000000000000000000000815263d0a1026090349061244c908e908d908c908c9033908d908d90600401615ccc565b6000604051808303818588803b15801561246557600080fd5b505af1158015612479573d6000803e3d6000fd5b50505050507e36c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c88a8a8a8a6040516124da94939291906001600160a01b039485168152929093166020830152604082015261ffff91909116606082015260800190565b60405180910390a150505050505050505050565b6001600160a01b038116600090815260056020526040902054819060ff1615801561252157506001600160a01b03811615155b15612558576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03811615612614576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc91906158af565b60028111156125dd576125dd615152565b03612614576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b038216156126e2576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ac91906158de565b6126e2576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126eb87614104565b6001600160a01b03808816600090815260066020908152604080832063ffffffff8b16845290915290205481169086168103612753576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03888116600081815260066020908152604080832063ffffffff8d168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958c1695861790558051938452908301919091528101919091527f4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c906060015b60405180910390a15050505050505050565b600080600061280586866116bd565b91509150816001600160a01b0316846001600160a01b03160361282d576001925050506128cb565b600081612862576001600160a01b038716600090815260086020908152604080832063ffffffff8a1684529091529020612878565b63ffffffff86166000908152600b602052604090205b6040805180820190915281546001600160a01b03908116808352600190930154602083015290925086161480156128b25750438160200151115b156128c357600193505050506128cb565b600093505050505b9392505050565b6001600160a01b038316600090815260016020908152604080832063ffffffff86168452825280832084845290915281205467ffffffffffffffff165b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff60018601168452909152902054156129635760010161290f565b949350505050565b6129736145de565b6001600160a01b038216600090815260056020526040902054829060ff166129c7576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615612a83576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a3b91906158af565b6002811115612a4c57612a4c615152565b03612a83576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615612b51576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1b91906158de565b612b51576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600a60205260409020546001600160a01b039081169087168103612bad576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000818152600a602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038c8116918217909255835194855290851691840191909152908201527f9914edfad6b7eac2e388f49bae232bd0e1954fbe92f5ed1ab975fc270f27cea59060600160405180910390a18515612cec5763ffffffff88166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316178155612c918743615ab0565b600182018190556040805163ffffffff8c1681526001600160a01b038516602082015280820192909252517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89181900360600190a150612d73565b63ffffffff88166000818152600b6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010183905580519384526001600160a01b038516918401919091528201527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8906060016127e4565b5050505050505050565b612d856145de565b612d908383836146ba565b505050565b612dac82612da66020860186615219565b336127f6565b612de2576040517f82ceb50e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526001602090815260408220908290612e0b90870187615219565b63ffffffff1681526020808201929092526040908101600090812087840135825290925290205467ffffffffffffffff169050612e498484836146dd565b612e7f576040517f098c20b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e8a848483614778565b612ec0576040517f2923b32a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612eec83612ed16020870187615219565b6020870135612ee66060890160408a0161577c565b86614838565b7f0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4848484604051612f1f93929190615d20565b60405180910390a150505050565b6001600160a01b038316600090815260036020908152604080832063ffffffff8616845282528083208484529091528120548190612f769067ffffffffffffffff166001615d48565b604080517fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b166020808301919091527fffffffff000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060e090811b821660288501526001600160a01b038b16602c85015289901b16604c830152605080830188905283518084039091018152607090920190925280519101209091505b95945050505050565b6130446145de565b6001600160a01b038116600090815260056020526040902054819060ff16613098576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03811615613154576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061310c91906158af565b600281111561311d5761311d615152565b03613154576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b03821615613222576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156131c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ec91906158de565b613222576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b03908116908616810361327e576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff871660008181526009602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b169081179091558251938452908301527f16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f59101610dd6565b6001600160a01b03808316600090815260066020908152604080832063ffffffff861684529091529020541680611aa2575063ffffffff81166000908152600960205260409020546001600160a01b031680611aa2576040517fb6f3253d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61338c6145de565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396906020015b60405180910390a150565b6001600160a01b038216600090815260056020526040902054829060ff1661344d576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615613509576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c191906158af565b60028111156134d2576134d2615152565b03613509576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b038216156135d7576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa15801561357d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a191906158de565b6135d7576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135df6145de565b8460000361362b5763ffffffff87166000908152600b6020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101556136b1565b438511613664576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388161781556001018590555b6040805163ffffffff891681526001600160a01b03881660208201529081018690527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f890606001610dd6565b61370684614104565b6137118484846128d2565b61371c906001615d48565b67ffffffffffffffff168167ffffffffffffffff1614613774576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611572565b6001600160a01b038416600081815260016020908152604080832063ffffffff881680855290835281842087855283529281902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716908117909155815193845291830186905282019290925260608101919091527f28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde4890608001612f1f565b604080518082019091526000808252602082015261384460a08401608085016158fb565b80156138595750600e546001600160a01b0316155b15613890576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260036020908152604082209082906138b990870187615219565b63ffffffff168152602080820192909252604090810160009081208784013582529092529020546138f59067ffffffffffffffff166001615d48565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001856001600160a01b031681526020018660000160208101906139629190615219565b63ffffffff16815260200186602001358152602001613a5e847f0000000000000000000000000000000000000000000000000000000000000000888a60000160208101906139b09190615219565b8b60200135600085856001600160a01b03861660405160c09390931b7fffffffffffffffff00000000000000000000000000000000000000000000000016602084015260e091821b7fffffffff000000000000000000000000000000000000000000000000000000009081166028850152602c8401919091529085901b16604c8201526050810183905260700160405160208183030381529060405280519060200120905095945050505050565b8152602001613a706040880188615d69565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452509293509150613abd9050856109ef6020890189615219565b90506001600160a01b03811663d80e9bd983613adc60608a018a615d69565b613aec60a08c0160808d016158fb565b6040518563ffffffff1660e01b8152600401613b0b9493929190615dce565b6040805180830381865afa158015613b27573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114dc9190615ec5565b6000613b6484613b5e6020880188615219565b856127f6565b613b7057506000612963565b6001600160a01b03841660009081526001602090815260408220908290613b9990890189615219565b63ffffffff1681526020808201929092526040908101600090812089840135825290925290205467ffffffffffffffff169050613bd78686836146dd565b613be5576000915050612963565b613bf0868683614778565b613bfe576000915050612963565b82613c0d576000915050612963565b50600195945050505050565b613c216145de565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f97f025840000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015613c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc291906158de565b613cf8576040517f63aaf06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615613d4b576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af591016133ee565b613e1f6145de565b6001600160a01b038116613eb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611572565b613ebe81614652565b50565b6001600160a01b038516600090815260016020908152604080832063ffffffff88168452825280832086845290915281205467ffffffffffffffff90811690841681101561401c57600181015b8467ffffffffffffffff168167ffffffffffffffff1611613fb7576001600160a01b038816600090815260026020908152604080832063ffffffff8b1684528252808320898452825280832067ffffffffffffffff85168452909152902054613faf576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611572565b600101613f0e565b506001600160a01b038716600090815260016020908152604080832063ffffffff8a1684528252808320888452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790555b82516020808501919091206001600160a01b038916600090815260028352604080822063ffffffff8b1683528452808220898352845280822067ffffffffffffffff8916835290935291909120549092508083146140b0576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401611572565b50506001600160a01b03909516600090815260026020908152604080832063ffffffff909716835295815285822094825293845284812067ffffffffffffffff909316815291909252918220919091555090565b336001600160a01b0382161480159061413757506001600160a01b038181166000908152600f6020526040902054163314155b15613ebe576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614176614cad565b6000806141ff8561418a6020870187615219565b6001600160a01b0391909116600090815260036020908152604080832063ffffffff94909416835292815282822081890135835290522080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff928316019182161790915590565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001876001600160a01b0316815260200186600001602081019061426c9190615219565b63ffffffff168152602001866020013581526020016142ba847f00000000000000000000000000000000000000000000000000000000000000008a8a60000160208101906139b09190615219565b81526020016142cc6040880188615d69565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525092935091506143199050876109ef6020890189615219565b90506000806001600160a01b038316634389e58f8561433b60608c018c615d69565b61434b60a08e0160808f016158fb565b6040518563ffffffff1660e01b815260040161436a9493929190615dce565b6000604051808303816000875af1158015614389573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526143cf9190810190615ee1565b90925090507f1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f8161440360608b018b615d69565b866040516144149493929190615f30565b60405180910390a1506040805160608101825260a090940151845267ffffffffffffffff909416602084015292820192909252925090509250929050565b6000811561451b57600e546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156144bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144df9190615f71565b90508060000361451b576040517fe801604300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b82518210806145325750808360200151115b15612d9057825160208401516040517fe273c847000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052604482015260648101829052608401611572565b8315614598576145988583866148b8565b828410156145ad576145ad85828686036148b8565b5050505050565b83156145c4576145c4828561490c565b828410156145d8576145d88185850361490c565b50505050565b6000546001600160a01b031633146121c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611572565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166146d257612d90828261490c565b612d908383836148b8565b6000808267ffffffffffffffff16118061296357506040517fff7bd03d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063ff7bd03d90614737908790600401615f8a565b602060405180830381865afa158015614754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296391906158de565b600067ffffffffffffffff8216614795606086016040870161577c565b67ffffffffffffffff16118061296357506001600160a01b038316600090815260026020908152604082209082906147cf90880188615219565b63ffffffff1663ffffffff1681526020019081526020016000206000866020013581526020019081526020016000206000866040016020810190614813919061577c565b67ffffffffffffffff1681526020810191909152604001600020541415949350505050565b8061486f576040517fa84ab60d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909416600090815260026020908152604080832063ffffffff909616835294815284822093825292835283812067ffffffffffffffff909216815291522055565b6001600160a01b0382166148f8576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d906001600160a01b03841683836149eb565b6001600160a01b03821661494c576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614999576040519150601f19603f3d011682016040523d82523d6000602084013e61499e565b606091505b5050905080612d90576040517f2c024f920000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401611572565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152612d9092869291600091614aa9918516908490614b56565b9050805160001480614aca575080806020019051810190614aca91906158de565b612d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611572565b6060612963848460008585600080866001600160a01b03168587604051614b7d9190615f98565b60006040518083038185875af1925050503d8060008114614bba576040519150601f19603f3d011682016040523d82523d6000602084013e614bbf565b606091505b5091509150614bd087838387614bdb565b979650505050505050565b60608315614c64578251600003614c5d576001600160a01b0385163b614c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611572565b5081612963565b6129638383815115614c795781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115729190615029565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614cf0604051806040016040528060008152602001600081525090565b905290565b600060608284031215614d0757600080fd5b50919050565b80356001600160a01b038116811461451b57600080fd5b60008083601f840112614d3657600080fd5b50813567ffffffffffffffff811115614d4e57600080fd5b60208301915083602082850101111561174d57600080fd5b600080600080600080600060e0888a031215614d8157600080fd5b614d8b8989614cf5565b9650614d9960608901614d0d565b95506080880135945060a088013567ffffffffffffffff80821115614dbd57600080fd5b614dc98b838c01614d24565b909650945060c08a0135915080821115614de257600080fd5b50614def8a828b01614d24565b989b979a50959850939692959293505050565b803563ffffffff8116811461451b57600080fd5b60008060008060808587031215614e2c57600080fd5b614e3585614d0d565b9350614e4360208601614e02565b9250614e5160408601614d0d565b9396929550929360600135925050565b60008060408385031215614e7457600080fd5b823567ffffffffffffffff811115614e8b57600080fd5b830160a08186031215614e9d57600080fd5b9150614eab60208401614d0d565b90509250929050565b60006080820190508251825267ffffffffffffffff60208401511660208301526040830151614ef0604084018280518252602090810151910152565b5092915050565b600080600080600060c08688031215614f0f57600080fd5b614f1886614d0d565b9450614f278760208801614cf5565b93506080860135925060a086013567ffffffffffffffff811115614f4a57600080fd5b614f5688828901614d24565b969995985093965092949392505050565b60008060008060808587031215614f7d57600080fd5b614f8685614d0d565b9350614f9460208601614d0d565b9250614fa260408601614e02565b9150614fb060608601614e02565b905092959194509250565b60005b83811015614fd6578181015183820152602001614fbe565b50506000910152565b60008151808452614ff7816020860160208601614fbb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128cb6020830184614fdf565b803567ffffffffffffffff8116811461451b57600080fd5b600080600080600060a0868803121561506c57600080fd5b61507586614d0d565b945061508360208701614e02565b9350604086013592506150986060870161503c565b949793965091946080013592915050565b803561ffff8116811461451b57600080fd5b600080600080608085870312156150d157600080fd5b6150da85614d0d565b93506150e860208601614d0d565b925060408501359150614fb0606086016150a9565b6000806040838503121561511057600080fd5b61511983614d0d565b9150614eab60208401614e02565b6000806080838503121561513a57600080fd5b6151448484614cf5565b9150614eab60608401614d0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106151bc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000602082840312156151d457600080fd5b6128cb82614d0d565b6000806000606084860312156151f257600080fd5b6151fb84614d0d565b925061520960208501614e02565b9150604084013590509250925092565b60006020828403121561522b57600080fd5b6128cb82614e02565b6000806000806000806000806000806000806101208d8f03121561525757600080fd5b6152608d614d0d565b9b5061526e60208e01614d0d565b9a5060408d0135995061528360608e016150a9565b985060808d0135975060a08d0135965067ffffffffffffffff60c08e013511156152ac57600080fd5b6152bc8e60c08f01358f01614d24565b909650945067ffffffffffffffff60e08e013511156152da57600080fd5b6152ea8e60e08f01358f01614d24565b909450925067ffffffffffffffff6101008e0135111561530957600080fd5b61531a8e6101008f01358f01614d24565b81935080925050509295989b509295989b509295989b565b60008060008060008060008060008060006101408c8e03121561535457600080fd5b61535e8d8d614cf5565b9a5061536c60608d01614d0d565b995060808c0135985060a08c0135975060c08c0135965067ffffffffffffffff8060e08e0135111561539d57600080fd5b6153ad8e60e08f01358f01614d24565b90975095506101008d01358110156153c457600080fd5b6153d58e6101008f01358f01614d24565b90955093506101208d01358110156153ec57600080fd5b506153fe8d6101208e01358e01614d24565b81935080925050509295989b509295989b9093969950565b6000806000806060858703121561542c57600080fd5b61543585614d0d565b935061544360208601614d0d565b9250604085013567ffffffffffffffff8082111561546057600080fd5b818701915087601f83011261547457600080fd5b81358181111561548357600080fd5b8860208260051b850101111561549857600080fd5b95989497505060200194505050565b6000806000806000608086880312156154bf57600080fd5b6154c886614d0d565b9450602086013593506154dd604087016150a9565b9250606086013567ffffffffffffffff811115614f4a57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561553a5783516001600160a01b031683529284019291840191600101615515565b50909695505050505050565b60008060008060008060008060c0898b03121561556257600080fd5b61556b89614d0d565b975061557960208a01614d0d565b96506040890135955061558e60608a016150a9565b9450608089013567ffffffffffffffff808211156155ab57600080fd5b6155b78c838d01614d24565b909650945060a08b01359150808211156155d057600080fd5b506155dd8b828c01614d24565b999c989b5096995094979396929594505050565b60008060006060848603121561560657600080fd5b61560f84614d0d565b925061561d60208501614e02565b915061562b60408501614d0d565b90509250925092565b60008060006060848603121561564957600080fd5b61565284614e02565b925061520960208501614d0d565b60008060006060848603121561567557600080fd5b61565284614d0d565b600080600060a0848603121561569357600080fd5b61569d8585614cf5565b92506156ab60608501614d0d565b9150608084013590509250925092565b600080604083850312156156ce57600080fd5b614e9d83614e02565b600080600080608085870312156156ed57600080fd5b6156f685614d0d565b935061570460208601614e02565b925060408501359150614fb06060860161503c565b815181526020808301519082015260408101611aa2565b60008060008060c0858703121561574657600080fd5b6157508686614cf5565b935061575e60608601614d0d565b925061576c60808601614d0d565b9396929550929360a00135925050565b60006020828403121561578e57600080fd5b6128cb8261503c565b838152818360208301376000910160200190815292915050565b63ffffffff6157bf82614e02565b1682526020810135602083015267ffffffffffffffff6157e16040830161503c565b1660408301525050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61583e81896157b1565b86606082015260e06080820152600061585b60e0830187896157eb565b6001600160a01b03861660a084015282810360c084015261587d8185876157eb565b9a9950505050505050505050565b6080810161589982856157b1565b6001600160a01b03831660608301529392505050565b6000602082840312156158c157600080fd5b8151600381106128cb57600080fd5b8015158114613ebe57600080fd5b6000602082840312156158f057600080fd5b81516128cb816158d0565b60006020828403121561590d57600080fd5b81356128cb816158d0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261595857600080fd5b815167ffffffffffffffff8082111561597357615973615918565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156159b9576159b9615918565b816040528381528660208588010111156159d257600080fd5b6114dc846020830160208901614fbb565b6000602082840312156159f557600080fd5b815167ffffffffffffffff811115615a0c57600080fd5b61296384828501615947565b8a815261ffff8a16602082015288604082015287606082015260e060808201526000615a4860e08301888a6157eb565b82810360a0840152615a5b8187896157eb565b905082810360c0840152615a708185876157eb565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611aa257611aa2615a81565b6000610120615ad2838e6157b1565b8b60608401528a60808401528960a08401528060c0840152615af7818401898b6157eb565b905082810360e0840152615b0c8187896157eb565b9050828103610100840152615a708185876157eb565b600060408083016001600160a01b03871684526020604081860152818683526060925060608601905060608760051b8701018860005b89811015615c63577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c3603018112615bb957600080fd5b8b0163ffffffff80615bca83614e02565b16855280615bd9888401614e02565b168786015250878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112615c1357600080fd5b01858101903567ffffffffffffffff811115615c2e57600080fd5b803603821315615c3d57600080fd5b8789860152615c4f88860182846157eb565b958701959450505090840190600101615b58565b50909a9950505050505050505050565b8183823760009101908152919050565b60006001600160a01b03808916835280881660208401525085604083015261ffff8516606083015260a06080830152615cc060a0830184866157eb565b98975050505050505050565b60006001600160a01b03808a16835288602084015260a06040840152615cf660a08401888a6157eb565b81871660608501528381036080850152615d118186886157eb565b9b9a5050505050505050505050565b60a08101615d2e82866157b1565b6001600160a01b0393909316606082015260800152919050565b67ffffffffffffffff818116838216019080821115614ef057614ef0615a81565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615d9e57600080fd5b83018035915067ffffffffffffffff821115615db957600080fd5b60200191503681900382131561174d57600080fd5b6060815267ffffffffffffffff855116606082015263ffffffff60208601511660808201526001600160a01b0360408601511660a082015260006060860151615e1f60c084018263ffffffff169052565b50608086015160e083015260a086015161010083015260c086015160e0610120840152615e50610140840182614fdf565b90508281036020840152615e658186886157eb565b915050613033604083018415159052565b600060408284031215615e8857600080fd5b6040516040810181811067ffffffffffffffff82111715615eab57615eab615918565b604052825181526020928301519281019290925250919050565b600060408284031215615ed757600080fd5b6128cb8383615e76565b60008060608385031215615ef457600080fd5b615efe8484615e76565b9150604083015167ffffffffffffffff811115615f1a57600080fd5b615f2685828601615947565b9150509250929050565b606081526000615f436060830187614fdf565b8281036020840152615f568186886157eb565b9150506001600160a01b038316604083015295945050505050565b600060208284031215615f8357600080fd5b5051919050565b60608101611aa282846157b1565b60008251615faa818460208701614fbb565b919091019291505056fea264697066735822122086e1ebfd4439c4a1c599a06af34ba4f6f43998236d3d89fb05316f09741a8a7e64736f6c63430008160033608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea264697066735822122093dd196808f6be235b3a1fbe17f1b527c6caf755f44b0900d5937f3e0d93500964736f6c63430008160033";
45473
+ static readonly bytecode = "0x60c06040526001600d553480156200001657600080fd5b5060405162006627380380620066278339810160408190526200003991620002d6565b816200004533620000a6565b63ffffffff166080526040516200005c90620002c8565b604051809103906000f08015801562000079573d6000803e3d6000fd5b506001600160a01b031660a08190526200009390620000f6565b6200009e81620000a6565b505062000353565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200010062000267565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200014c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000172919062000328565b62000190576040516331d5783360e11b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620001cb57604051630ea075bf60e21b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5910160405180910390a150565b6000546001600160a01b03163314620002c65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b61028f806200639883390190565b60008060408385031215620002ea57600080fd5b825163ffffffff81168114620002ff57600080fd5b60208401519092506001600160a01b03811681146200031d57600080fd5b809150509250929050565b6000602082840312156200033b57600080fd5b815180151581146200034c57600080fd5b9392505050565b60805160a051615ffc6200039c60003960006107de01526000818161055f01528181612f69015281816139280152818161398f0152818161423201526142990152615ffc6000f3fe6080604052600436106103605760003560e01c80639132e5c3116101c6578063ca5eb5e1116100f7578063e1758bd811610095578063e8964e811161006f578063e8964e8114610bcd578063ef667aa114610bed578063f2fde38b14610c38578063f64be4c714610c5857600080fd5b8063e1758bd814610b79578063e1e3a7df14610b8d578063e4fe1d9414610bad57600080fd5b8063d70b8902116100d1578063d70b890214610ab0578063dc706a6214610ad0578063dc93c8a214610b00578063ddc28c5814610b4c57600080fd5b8063ca5eb5e114610a5b578063cb5026b914610a7b578063d4b4ec8f14610a9057600080fd5b8063a7229fd911610164578063aafea3121161013e578063aafea312146109b4578063b96a277f146109d4578063c28e0eed146109f4578063c9fc7bcd14610a1457600080fd5b8063a7229fd914610954578063a825d74714610974578063aafe5e071461099457600080fd5b80639c6d7340116101a05780639c6d7340146108ac5780639d7f9775146108f4578063a0dd43fc14610914578063a718531b1461093457600080fd5b80639132e5c31461085757806391d20fa1146108795780639535ff301461088c57600080fd5b8063587cde1e116102a05780636e83f5bb1161023e578063733180911161021857806373318091146107cc57806379624ca9146108005780637cb59012146108195780638da5cb5b1461083957600080fd5b80636e83f5bb146107225780636f50a80314610781578063715018a6146107b757600080fd5b8063697fe6b61161027a578063697fe6b6146106a25780636a14d715146106c25780636bf73fa3146106e25780636dbd9f901461070257600080fd5b8063587cde1e146105c35780635b17bb70146106115780636750cd4c1461067257600080fd5b80632baf0be71161030d578063402f8468116102e7578063402f8468146104ee57806340f806831461052d578063416ecebf1461054d5780634b4b2efb1461059657600080fd5b80632baf0be7146104455780632e80fbf31461048757806335d330b0146104a757600080fd5b80632637a4501161033e5780632637a450146103d85780632a56c1b0146103f85780632b3197b91461041857600080fd5b80630c0c389e1461036557806314f651a91461037a578063183c834f146103b8575b600080fd5b610378610373366004614d78565b610c8e565b005b34801561038657600080fd5b5061038f610da5565b6040805163ffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b3480156103c457600080fd5b506103786103d3366004614e28565b610dd7565b6103eb6103e6366004614e73565b611162565b6040516103af9190614ec6565b34801561040457600080fd5b50610378610413366004614f09565b6112cb565b34801561042457600080fd5b50610438610433366004614f79565b611389565b6040516103af919061503b565b34801561045157600080fd5b506104797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6040519081526020016103af565b34801561049357600080fd5b506103786104a2366004615066565b6114a4565b3480156104b357600080fd5b506104796104c23660046150cd565b600c60209081526000948552604080862082529385528385208152918452828420909152825290205481565b3480156104fa57600080fd5b5061050e61050936600461510f565b61167b565b604080516001600160a01b0390931683529015156020830152016103af565b34801561053957600080fd5b50610378610548366004615066565b611712565b34801561055957600080fd5b506105817f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103af565b3480156105a257600080fd5b506105b66105b1366004615139565b6118c2565b6040516103af9190615193565b3480156105cf57600080fd5b506105f96105de3660046151d4565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103af565b34801561061d57600080fd5b5061065961062c3660046151ef565b600160209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103af565b34801561067e57600080fd5b5061069261068d36600461522b565b611a66565b60405190151581526020016103af565b3480156106ae57600080fd5b506103786106bd366004615246565b611ab2565b3480156106ce57600080fd5b506103786106dd366004614e28565b611b27565b3480156106ee57600080fd5b506103786106fd366004615344565b612027565b34801561070e57600080fd5b5061037861071d366004615428565b612091565b34801561072e57600080fd5b5061076261073d36600461522b565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016103af565b34801561078d57600080fd5b506105f961079c36600461522b565b600a602052600090815260409020546001600160a01b031681565b3480156107c357600080fd5b50610378612165565b3480156107d857600080fd5b506105f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561080c57600080fd5b50600d5460011415610692565b34801561082557600080fd5b506103786108343660046154b9565b612179565b34801561084557600080fd5b506000546001600160a01b03166105f9565b34801561086357600080fd5b5061086c61227e565b6040516103af919061550b565b610378610887366004615558565b6122e0565b34801561089857600080fd5b506103786108a7366004615603565b6124a2565b3480156108b857600080fd5b506106596108c73660046151ef565b600360209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b34801561090057600080fd5b5061069261090f366004615603565b61279b565b34801561092057600080fd5b5061065961092f3660046151ef565b612877565b34801561094057600080fd5b5061037861094f366004615646565b612910565b34801561096057600080fd5b5061037861096f366004615672565b612d19565b34801561098057600080fd5b5061037861098f366004615690565b612d31565b3480156109a057600080fd5b506104796109af3660046151ef565b612ec9565b3480156109c057600080fd5b506103786109cf3660046156cd565b612fd8565b3480156109e057600080fd5b506105f96109ef36600461510f565b613296565b348015610a0057600080fd5b50610378610a0f3660046151d4565b61331e565b348015610a2057600080fd5b50610479610a2f3660046156e9565b600260209081526000948552604080862082529385528385208152918452828420909152825290205481565b348015610a6757600080fd5b50610378610a763660046151d4565b613393565b348015610a8757600080fd5b50610479600081565b348015610a9c57600080fd5b50610378610aab366004615646565b61340b565b348015610abc57600080fd5b50610378610acb3660046156e9565b61370f565b348015610adc57600080fd5b50610692610aeb3660046151d4565b60056020526000908152604090205460ff1681565b348015610b0c57600080fd5b50610692610b1b36600461510f565b6001600160a01b03918216600090815260066020908152604080832063ffffffff9490941683529290522054161590565b348015610b5857600080fd5b50610b6c610b67366004614e73565b613832565b6040516103af919061572b565b348015610b8557600080fd5b5060006105f9565b348015610b9957600080fd5b50610692610ba8366004615742565b613b5d565b348015610bb957600080fd5b50600e546105f9906001600160a01b031681565b348015610bd957600080fd5b50610378610be83660046151d4565b613c2b565b348015610bf957600080fd5b50610762610c0836600461510f565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b348015610c4457600080fd5b50610378610c533660046151d4565b613e29565b348015610c6457600080fd5b506105f9610c7336600461522b565b6009602052600090815260409020546001600160a01b031681565b610cdd86610c9f60208a018a61522b565b60208a0135610cb460608c0160408d0161578e565b898989604051602001610cc9939291906157a9565b604051602081830303815290604052613ed3565b506040517f13137d650000000000000000000000000000000000000000000000000000000081526001600160a01b038716906313137d65903490610d31908b908a908a908a9033908b908b90600401615846565b6000604051808303818588803b158015610d4a57600080fd5b505af1158015610d5e573d6000803e3d6000fd5b50505050507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048787604051610d9492919061589d565b60405180910390a150505050505050565b600080610db5600d546001141590565b610dc157600080610dcf565b610dcf600d5460a081901c91565b915091509091565b6001600160a01b038216600090815260056020526040902054829060ff16610e2b576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615610ee7576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f91906158c1565b6002811115610eb057610eb0615164565b03610ee7576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615610fb5576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f91906158f0565b610fb5576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fbe88614116565b6000610fca898961167b565b9150508015611005576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003611065576001600160a01b038916600090815260086020908152604080832063ffffffff8c168452909152812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101556110fc565b43861161109e576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600090815260086020908152604080832063ffffffff8d168452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169189169190911781556001018690555b604080516001600160a01b03808c16825263ffffffff8b166020830152891691810191909152606081018790527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928906080015b60405180910390a1505050505050505050565b61116a614cbf565b611177602084018461522b565b336001600d54146111b4576040517f9633fed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffff000000000000000000000000000000000000000060a083811b919091166001600160a01b03831617600d556111f39086016080870161590d565b80156112085750600e546001600160a01b0316155b1561123f576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061124c3388614180565b9150915060006112593490565b9050600061127561127060a08b0160808c0161590d565b614464565b905061128684604001518383614532565b600e546040850151602001516112a8916001600160a01b03169083868c614599565b6040840151516112ba9083858b6145c6565b50506001600d555095945050505050565b6112d485614116565b60008383836040516020016112eb939291906157a9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506113478661132c602088018861522b565b602088013561134160608a0160408b0161578e565b85613ed3565b507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04858760405161137992919061589d565b60405180910390a1505050505050565b6001600160a01b038316600090815260056020526040902054606090849060ff166113e0576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9c33abf700000000000000000000000000000000000000000000000000000000815263ffffffff80861660048301526001600160a01b0388811660248401529085166044830152861690639c33abf790606401600060405180830381865afa158015611454573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261149a91908101906159f5565b9695505050505050565b6114ad85614116565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff86168452909152902054818114611539576040517fe4bb0ca100000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff90811690841611801590611586575080155b156115c9576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611530565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff8916808652908452938290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905581519081529182018890528101929092526060820152608081018390527faf0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb552929060a001611379565b6001600160a01b03808316600090815260076020908152604080832063ffffffff86168452909152812054909116908161170b5763ffffffff83166000908152600a60205260409020546001600160a01b0316915081611707576040517ffbc6a95a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060015b9250929050565b61171b85614116565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff861684529091529020548181146117a2576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401611530565b8015806117ed57506001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416115b15611830576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611530565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff89168086529084528285209490945581519081529182018890528101929092526060820152608081018390527f7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e9060a001611379565b6001600160a01b03811660009081526002602090815260408220829182906118ec9087018761522b565b63ffffffff1663ffffffff1681526020019081526020016000206000856020013581526020019081526020016000206000856040016020810190611930919061578e565b67ffffffffffffffff1681526020810191909152604001600020549050801580156119cf57506001600160a01b03831660009081526001602090815260408220919061197e9087018761522b565b63ffffffff16815260208082019290925260409081016000908120878401358252909252908190205467ffffffffffffffff16906119c2906060870190870161578e565b67ffffffffffffffff1611155b156119de576002915050611a60565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114801590611a4b5750611a2483611a1a602087018761522b565b8660200135612877565b67ffffffffffffffff16611a3e606086016040870161578e565b67ffffffffffffffff1611155b15611a5a576001915050611a60565b60009150505b92915050565b63ffffffff81166000908152600960205260408120546001600160a01b031615801590611a6057505063ffffffff166000908152600a60205260409020546001600160a01b0316151590565b336001600160a01b03168b6001600160a01b03168d6001600160a01b03167f8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b98d8d8d8d8d8d8d8d8d8d604051611b119a99989796959493929190615a2a565b60405180910390a4505050505050505050505050565b6001600160a01b038216600090815260056020526040902054829060ff16158015611b5a57506001600160a01b03811615155b15611b91576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615611c4d576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0591906158c1565b6002811115611c1657611c16615164565b03611c4d576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615611d1b576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015611cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce591906158f0565b611d1b576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d2488614116565b6001600160a01b03808916600090815260076020908152604080832063ffffffff8c16845290915290205481169087168103611d8c576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600081815260076020908152604080832063ffffffff8e168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958d1695861790558051938452908301919091528101919091527fcd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c29060600160405180910390a18515611f7c576001600160a01b0381161580611e4757506001600160a01b038716155b15611e7e576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280836001600160a01b031681526020018843611ea69190615ac2565b90526001600160a01b03808c16600090815260086020908152604080832063ffffffff8f1684528252918290208451815494167fffffffffffffffffffffffff00000000000000000000000000000000000000009094169390931783558301516001909201829055519192507f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611f6e918d918d9187916001600160a01b03948516815263ffffffff93909316602084015292166040820152606081019190915260800190565b60405180910390a15061201c565b6001600160a01b03898116600081815260086020908152604080832063ffffffff8e1680855290835281842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001018490558151948552918401919091529284169282019290925260608101919091527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb209289060800161114f565b505050505050505050565b336001600160a01b03168a6001600160a01b03167f7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c8d8c8c8c8c8c8c8c8c8c60405161207c9a99989796959493929190615ad5565b60405180910390a35050505050505050505050565b6001600160a01b038316600090815260056020526040902054839060ff166120e5576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ee85614116565b6040517f20efd7220000000000000000000000000000000000000000000000000000000081526001600160a01b038516906320efd7229061213790889087908790600401615b34565b600060405180830381600087803b15801561215157600080fd5b505af115801561201c573d6000803e3d6000fd5b61216d6145f0565b6121776000614664565b565b336000908152600c602090815260408083206001600160a01b03891684528252808320878452825280832061ffff87168452909152902054156121e8576040517f895fdbee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816040516121f8929190615c85565b60408051918290038220336000818152600c60209081528482206001600160a01b038c16835281528482208a8352815284822061ffff8a168352905292909220557f3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc19161226f919088908890889088908890615c95565b60405180910390a15050505050565b606060048054806020026020016040519081016040528092919081815260200182805480156122d657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122b8575b5050505050905090565b6001600160a01b038089166000908152600c60209081526040808320938b168352928152828220898352815282822061ffff89168352905281812054915161232b9087908790615c85565b60405180910390209050808214612378576040517f9e3e05830000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611530565b6001600160a01b03808b166000908152600c60209081526040808320938d168084529382528083208c8452825280832061ffff8c1684529091529081902060019055517fd0a1026000000000000000000000000000000000000000000000000000000000815263d0a10260903490612400908e908d908c908c9033908d908d90600401615cde565b6000604051808303818588803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b50505050507e36c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c88a8a8a8a60405161248e94939291906001600160a01b039485168152929093166020830152604082015261ffff91909116606082015260800190565b60405180910390a150505050505050505050565b6001600160a01b038116600090815260056020526040902054819060ff161580156124d557506001600160a01b03811615155b1561250c576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b038116156125c8576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258091906158c1565b600281111561259157612591615164565b036125c8576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b03821615612696576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266091906158f0565b612696576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61269f87614116565b6001600160a01b03878116600090815260066020908152604080832063ffffffff8b168452909152902054818716911603612706576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03878116600081815260066020908152604080832063ffffffff8c168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958b1695861790558051938452908301919091528101919091527f4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c90606001610d94565b60008060006127aa868661167b565b91509150816001600160a01b0316846001600160a01b0316036127d257600192505050612870565b600081612807576001600160a01b038716600090815260086020908152604080832063ffffffff8a168452909152902061281d565b63ffffffff86166000908152600b602052604090205b6040805180820190915281546001600160a01b03908116808352600190930154602083015290925086161480156128575750438160200151115b156128685760019350505050612870565b600093505050505b9392505050565b6001600160a01b038316600090815260016020908152604080832063ffffffff86168452825280832084845290915281205467ffffffffffffffff165b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff6001860116845290915290205415612908576001016128b4565b949350505050565b6129186145f0565b6001600160a01b038216600090815260056020526040902054829060ff1661296c576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615612a28576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e091906158c1565b60028111156129f1576129f1615164565b03612a28576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615612af6576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac091906158f0565b612af6576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600a60205260409020546001600160a01b039081169087168103612b52576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000818152600a602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038c169081179091558251938452908301527fc16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec910160405180910390a18515612c845763ffffffff88166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316178155612c298743615ac2565b600182018190556040805163ffffffff8c1681526001600160a01b038516602082015280820192909252517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89181900360600190a150612d0f565b63ffffffff88166000818152600b6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010183905580519384526001600160a01b038516918401919091528201527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89060600160405180910390a15b5050505050505050565b612d216145f0565b612d2c8383836146cc565b505050565b612d4882612d42602086018661522b565b3361279b565b612d7e576040517f82ceb50e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526001602090815260408220908290612da79087018761522b565b63ffffffff1681526020808201929092526040908101600090812087840135825290925290205467ffffffffffffffff169050612de58484836146ef565b612e1b576040517f098c20b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e2684848361478a565b612e5c576040517f2923b32a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e8883612e6d602087018761522b565b6020870135612e826060890160408a0161578e565b8661484a565b7f0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4848484604051612ebb93929190615d32565b60405180910390a150505050565b6001600160a01b038316600090815260036020908152604080832063ffffffff8616845282528083208484529091528120548190612f129067ffffffffffffffff166001615d5a565b604080517fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b166020808301919091527fffffffff000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060e090811b821660288501526001600160a01b038b16602c85015289901b16604c830152605080830188905283518084039091018152607090920190925280519101209091505b95945050505050565b612fe06145f0565b6001600160a01b038116600090815260056020526040902054819060ff16613034576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b038116156130f0576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a891906158c1565b60028111156130b9576130b9615164565b036130f0576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b038216156131be576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015613164573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318891906158f0565b6131be576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b03808716911603613218576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff861660008181526009602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a169081179091558251938452908301527f16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f59101611379565b6001600160a01b03808316600090815260066020908152604080832063ffffffff861684529091529020541680611a60575063ffffffff81166000908152600960205260409020546001600160a01b031680611a60576040517fb6f3253d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133266145f0565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396906020015b60405180910390a150565b336000818152600f602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558251938452908301527f6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d79839819101613388565b6001600160a01b038216600090815260056020526040902054829060ff1661345f576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0381161561351b576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d391906158c1565b60028111156134e4576134e4615164565b0361351b576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b038216156135e9576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa15801561358f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b391906158f0565b6135e9576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6135f16145f0565b8460000361363d5763ffffffff87166000908152600b6020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101556136c3565b438511613676576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388161781556001018590555b6040805163ffffffff891681526001600160a01b03881660208201529081018690527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f890606001610d94565b61371884614116565b613723848484612877565b61372e906001615d5a565b67ffffffffffffffff168167ffffffffffffffff1614613786576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611530565b6001600160a01b038416600081815260016020908152604080832063ffffffff881680855290835281842087855283529281902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716908117909155815193845291830186905282019290925260608101919091527f28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde4890608001612ebb565b604080518082019091526000808252602082015261385660a084016080850161590d565b801561386b5750600e546001600160a01b0316155b156138a2576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260036020908152604082209082906138cb9087018761522b565b63ffffffff168152602080820192909252604090810160009081208784013582529092529020546139079067ffffffffffffffff166001615d5a565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001856001600160a01b03168152602001866000016020810190613974919061522b565b63ffffffff16815260200186602001358152602001613a70847f0000000000000000000000000000000000000000000000000000000000000000888a60000160208101906139c2919061522b565b8b60200135600085856001600160a01b03861660405160c09390931b7fffffffffffffffff00000000000000000000000000000000000000000000000016602084015260e091821b7fffffffff000000000000000000000000000000000000000000000000000000009081166028850152602c8401919091529085901b16604c8201526050810183905260700160405160208183030381529060405280519060200120905095945050505050565b8152602001613a826040880188615d7b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452509293509150613acf9050856109ef602089018961522b565b90506001600160a01b03811663d80e9bd983613aee60608a018a615d7b565b613afe60a08c0160808d0161590d565b6040518563ffffffff1660e01b8152600401613b1d9493929190615de0565b6040805180830381865afa158015613b39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149a9190615ed7565b6000613b7684613b70602088018861522b565b8561279b565b613b8257506000612908565b6001600160a01b03841660009081526001602090815260408220908290613bab9089018961522b565b63ffffffff1681526020808201929092526040908101600090812089840135825290925290205467ffffffffffffffff169050613be98686836146ef565b613bf7576000915050612908565b613c0286868361478a565b613c10576000915050612908565b82613c1f576000915050612908565b50600195945050505050565b613c336145f0565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f97f025840000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015613cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd491906158f0565b613d0a576040517f63aaf06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615613d5d576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af59101613388565b613e316145f0565b6001600160a01b038116613ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611530565b613ed081614664565b50565b6001600160a01b038516600090815260016020908152604080832063ffffffff88168452825280832086845290915281205467ffffffffffffffff90811690841681101561402e57600181015b8467ffffffffffffffff168167ffffffffffffffff1611613fc9576001600160a01b038816600090815260026020908152604080832063ffffffff8b1684528252808320898452825280832067ffffffffffffffff85168452909152902054613fc1576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611530565b600101613f20565b506001600160a01b038716600090815260016020908152604080832063ffffffff8a1684528252808320888452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790555b82516020808501919091206001600160a01b038916600090815260028352604080822063ffffffff8b1683528452808220898352845280822067ffffffffffffffff8916835290935291909120549092508083146140c2576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401611530565b50506001600160a01b03909516600090815260026020908152604080832063ffffffff909716835295815285822094825293845284812067ffffffffffffffff909316815291909252918220919091555090565b336001600160a01b0382161480159061414957506001600160a01b038181166000908152600f6020526040902054163314155b15613ed0576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614188614cbf565b6000806142118561419c602087018761522b565b6001600160a01b0391909116600090815260036020908152604080832063ffffffff94909416835292815282822081890135835290522080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff928316019182161790915590565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001876001600160a01b0316815260200186600001602081019061427e919061522b565b63ffffffff168152602001866020013581526020016142cc847f00000000000000000000000000000000000000000000000000000000000000008a8a60000160208101906139c2919061522b565b81526020016142de6040880188615d7b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250929350915061432b9050876109ef602089018961522b565b90506000806001600160a01b038316634389e58f8561434d60608c018c615d7b565b61435d60a08e0160808f0161590d565b6040518563ffffffff1660e01b815260040161437c9493929190615de0565b6000604051808303816000875af115801561439b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526143e19190810190615ef3565b90925090507f1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f8161441560608b018b615d7b565b866040516144269493929190615f42565b60405180910390a1506040805160608101825260a090940151845267ffffffffffffffff909416602084015292820192909252925090509250929050565b6000811561452d57600e546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156144cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144f19190615f83565b90508060000361452d576040517fe801604300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b82518210806145445750808360200151115b15612d2c57825160208401516040517fe273c847000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052604482015260648101829052608401611530565b83156145aa576145aa8583866148ca565b828410156145bf576145bf85828686036148ca565b5050505050565b83156145d6576145d6828561491e565b828410156145ea576145ea8185850361491e565b50505050565b6000546001600160a01b03163314612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611530565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166146e457612d2c828261491e565b612d2c8383836148ca565b6000808267ffffffffffffffff16118061290857506040517fff7bd03d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063ff7bd03d90614749908790600401615f9c565b602060405180830381865afa158015614766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290891906158f0565b600067ffffffffffffffff82166147a7606086016040870161578e565b67ffffffffffffffff16118061290857506001600160a01b038316600090815260026020908152604082209082906147e19088018861522b565b63ffffffff1663ffffffff1681526020019081526020016000206000866020013581526020019081526020016000206000866040016020810190614825919061578e565b67ffffffffffffffff1681526020810191909152604001600020541415949350505050565b80614881576040517fa84ab60d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909416600090815260026020908152604080832063ffffffff909616835294815284822093825292835283812067ffffffffffffffff909216815291522055565b6001600160a01b03821661490a576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d2c6001600160a01b03841683836149fd565b6001600160a01b03821661495e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146149ab576040519150601f19603f3d011682016040523d82523d6000602084013e6149b0565b606091505b5050905080612d2c576040517f2c024f920000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401611530565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152612d2c92869291600091614abb918516908490614b68565b9050805160001480614adc575080806020019051810190614adc91906158f0565b612d2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611530565b6060612908848460008585600080866001600160a01b03168587604051614b8f9190615faa565b60006040518083038185875af1925050503d8060008114614bcc576040519150601f19603f3d011682016040523d82523d6000602084013e614bd1565b606091505b5091509150614be287838387614bed565b979650505050505050565b60608315614c76578251600003614c6f576001600160a01b0385163b614c6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611530565b5081612908565b6129088383815115614c8b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611530919061503b565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614d02604051806040016040528060008152602001600081525090565b905290565b600060608284031215614d1957600080fd5b50919050565b80356001600160a01b038116811461452d57600080fd5b60008083601f840112614d4857600080fd5b50813567ffffffffffffffff811115614d6057600080fd5b60208301915083602082850101111561170b57600080fd5b600080600080600080600060e0888a031215614d9357600080fd5b614d9d8989614d07565b9650614dab60608901614d1f565b95506080880135945060a088013567ffffffffffffffff80821115614dcf57600080fd5b614ddb8b838c01614d36565b909650945060c08a0135915080821115614df457600080fd5b50614e018a828b01614d36565b989b979a50959850939692959293505050565b803563ffffffff8116811461452d57600080fd5b60008060008060808587031215614e3e57600080fd5b614e4785614d1f565b9350614e5560208601614e14565b9250614e6360408601614d1f565b9396929550929360600135925050565b60008060408385031215614e8657600080fd5b823567ffffffffffffffff811115614e9d57600080fd5b830160a08186031215614eaf57600080fd5b9150614ebd60208401614d1f565b90509250929050565b60006080820190508251825267ffffffffffffffff60208401511660208301526040830151614f02604084018280518252602090810151910152565b5092915050565b600080600080600060c08688031215614f2157600080fd5b614f2a86614d1f565b9450614f398760208801614d07565b93506080860135925060a086013567ffffffffffffffff811115614f5c57600080fd5b614f6888828901614d36565b969995985093965092949392505050565b60008060008060808587031215614f8f57600080fd5b614f9885614d1f565b9350614fa660208601614d1f565b9250614fb460408601614e14565b9150614fc260608601614e14565b905092959194509250565b60005b83811015614fe8578181015183820152602001614fd0565b50506000910152565b60008151808452615009816020860160208601614fcd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128706020830184614ff1565b803567ffffffffffffffff8116811461452d57600080fd5b600080600080600060a0868803121561507e57600080fd5b61508786614d1f565b945061509560208701614e14565b9350604086013592506150aa6060870161504e565b949793965091946080013592915050565b803561ffff8116811461452d57600080fd5b600080600080608085870312156150e357600080fd5b6150ec85614d1f565b93506150fa60208601614d1f565b925060408501359150614fc2606086016150bb565b6000806040838503121561512257600080fd5b61512b83614d1f565b9150614ebd60208401614e14565b6000806080838503121561514c57600080fd5b6151568484614d07565b9150614ebd60608401614d1f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106151ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b6000602082840312156151e657600080fd5b61287082614d1f565b60008060006060848603121561520457600080fd5b61520d84614d1f565b925061521b60208501614e14565b9150604084013590509250925092565b60006020828403121561523d57600080fd5b61287082614e14565b6000806000806000806000806000806000806101208d8f03121561526957600080fd5b6152728d614d1f565b9b5061528060208e01614d1f565b9a5060408d0135995061529560608e016150bb565b985060808d0135975060a08d0135965067ffffffffffffffff60c08e013511156152be57600080fd5b6152ce8e60c08f01358f01614d36565b909650945067ffffffffffffffff60e08e013511156152ec57600080fd5b6152fc8e60e08f01358f01614d36565b909450925067ffffffffffffffff6101008e0135111561531b57600080fd5b61532c8e6101008f01358f01614d36565b81935080925050509295989b509295989b509295989b565b60008060008060008060008060008060006101408c8e03121561536657600080fd5b6153708d8d614d07565b9a5061537e60608d01614d1f565b995060808c0135985060a08c0135975060c08c0135965067ffffffffffffffff8060e08e013511156153af57600080fd5b6153bf8e60e08f01358f01614d36565b90975095506101008d01358110156153d657600080fd5b6153e78e6101008f01358f01614d36565b90955093506101208d01358110156153fe57600080fd5b506154108d6101208e01358e01614d36565b81935080925050509295989b509295989b9093969950565b6000806000806060858703121561543e57600080fd5b61544785614d1f565b935061545560208601614d1f565b9250604085013567ffffffffffffffff8082111561547257600080fd5b818701915087601f83011261548657600080fd5b81358181111561549557600080fd5b8860208260051b85010111156154aa57600080fd5b95989497505060200194505050565b6000806000806000608086880312156154d157600080fd5b6154da86614d1f565b9450602086013593506154ef604087016150bb565b9250606086013567ffffffffffffffff811115614f5c57600080fd5b6020808252825182820181905260009190848201906040850190845b8181101561554c5783516001600160a01b031683529284019291840191600101615527565b50909695505050505050565b60008060008060008060008060c0898b03121561557457600080fd5b61557d89614d1f565b975061558b60208a01614d1f565b9650604089013595506155a060608a016150bb565b9450608089013567ffffffffffffffff808211156155bd57600080fd5b6155c98c838d01614d36565b909650945060a08b01359150808211156155e257600080fd5b506155ef8b828c01614d36565b999c989b5096995094979396929594505050565b60008060006060848603121561561857600080fd5b61562184614d1f565b925061562f60208501614e14565b915061563d60408501614d1f565b90509250925092565b60008060006060848603121561565b57600080fd5b61566484614e14565b925061521b60208501614d1f565b60008060006060848603121561568757600080fd5b61566484614d1f565b600080600060a084860312156156a557600080fd5b6156af8585614d07565b92506156bd60608501614d1f565b9150608084013590509250925092565b600080604083850312156156e057600080fd5b614eaf83614e14565b600080600080608085870312156156ff57600080fd5b61570885614d1f565b935061571660208601614e14565b925060408501359150614fc26060860161504e565b815181526020808301519082015260408101611a60565b60008060008060c0858703121561575857600080fd5b6157628686614d07565b935061577060608601614d1f565b925061577e60808601614d1f565b9396929550929360a00135925050565b6000602082840312156157a057600080fd5b6128708261504e565b838152818360208301376000910160200190815292915050565b63ffffffff6157d182614e14565b1682526020810135602083015267ffffffffffffffff6157f36040830161504e565b1660408301525050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61585081896157c3565b86606082015260e06080820152600061586d60e0830187896157fd565b6001600160a01b03861660a084015282810360c084015261588f8185876157fd565b9a9950505050505050505050565b608081016158ab82856157c3565b6001600160a01b03831660608301529392505050565b6000602082840312156158d357600080fd5b81516003811061287057600080fd5b8015158114613ed057600080fd5b60006020828403121561590257600080fd5b8151612870816158e2565b60006020828403121561591f57600080fd5b8135612870816158e2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261596a57600080fd5b815167ffffffffffffffff808211156159855761598561592a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156159cb576159cb61592a565b816040528381528660208588010111156159e457600080fd5b61149a846020830160208901614fcd565b600060208284031215615a0757600080fd5b815167ffffffffffffffff811115615a1e57600080fd5b61290884828501615959565b8a815261ffff8a16602082015288604082015287606082015260e060808201526000615a5a60e08301888a6157fd565b82810360a0840152615a6d8187896157fd565b905082810360c0840152615a828185876157fd565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611a6057611a60615a93565b6000610120615ae4838e6157c3565b8b60608401528a60808401528960a08401528060c0840152615b09818401898b6157fd565b905082810360e0840152615b1e8187896157fd565b9050828103610100840152615a828185876157fd565b600060408083016001600160a01b03871684526020604081860152818683526060925060608601905060608760051b8701018860005b89811015615c75577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c3603018112615bcb57600080fd5b8b0163ffffffff80615bdc83614e14565b16855280615beb888401614e14565b168786015250878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112615c2557600080fd5b01858101903567ffffffffffffffff811115615c4057600080fd5b803603821315615c4f57600080fd5b8789860152615c6188860182846157fd565b958701959450505090840190600101615b6a565b50909a9950505050505050505050565b8183823760009101908152919050565b60006001600160a01b03808916835280881660208401525085604083015261ffff8516606083015260a06080830152615cd260a0830184866157fd565b98975050505050505050565b60006001600160a01b03808a16835288602084015260a06040840152615d0860a08401888a6157fd565b81871660608501528381036080850152615d238186886157fd565b9b9a5050505050505050505050565b60a08101615d4082866157c3565b6001600160a01b0393909316606082015260800152919050565b67ffffffffffffffff818116838216019080821115614f0257614f02615a93565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615db057600080fd5b83018035915067ffffffffffffffff821115615dcb57600080fd5b60200191503681900382131561170b57600080fd5b6060815267ffffffffffffffff855116606082015263ffffffff60208601511660808201526001600160a01b0360408601511660a082015260006060860151615e3160c084018263ffffffff169052565b50608086015160e083015260a086015161010083015260c086015160e0610120840152615e62610140840182614ff1565b90508281036020840152615e778186886157fd565b915050612fcf604083018415159052565b600060408284031215615e9a57600080fd5b6040516040810181811067ffffffffffffffff82111715615ebd57615ebd61592a565b604052825181526020928301519281019290925250919050565b600060408284031215615ee957600080fd5b6128708383615e88565b60008060608385031215615f0657600080fd5b615f108484615e88565b9150604083015167ffffffffffffffff811115615f2c57600080fd5b615f3885828601615959565b9150509250929050565b606081526000615f556060830187614ff1565b8281036020840152615f688186886157fd565b9150506001600160a01b038316604083015295945050505050565b600060208284031215615f9557600080fd5b5051919050565b60608101611a6082846157c3565b60008251615fbc818460208701614fcd565b919091019291505056fea2646970667358221220561f9ef0f0e380b1975d578a587dd4c7405c905ef2e51e87ccd55a19c881367064736f6c63430008160033608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea2646970667358221220c9c0506538080982fd403c3c32d7540c9fed117f863df9d5342f129ba868c53b64736f6c63430008160033";
45460
45474
  static readonly abi: readonly [{
45461
45475
  readonly inputs: readonly [{
45462
45476
  readonly internalType: "uint32";
@@ -45683,11 +45697,6 @@ declare class EndpointV2__factory extends ContractFactory {
45683
45697
  readonly internalType: "uint32";
45684
45698
  readonly name: "eid";
45685
45699
  readonly type: "uint32";
45686
- }, {
45687
- readonly indexed: false;
45688
- readonly internalType: "address";
45689
- readonly name: "oldLib";
45690
- readonly type: "address";
45691
45700
  }, {
45692
45701
  readonly indexed: false;
45693
45702
  readonly internalType: "address";
@@ -45731,6 +45740,21 @@ declare class EndpointV2__factory extends ContractFactory {
45731
45740
  }];
45732
45741
  readonly name: "DefaultSendLibrarySet";
45733
45742
  readonly type: "event";
45743
+ }, {
45744
+ readonly anonymous: false;
45745
+ readonly inputs: readonly [{
45746
+ readonly indexed: false;
45747
+ readonly internalType: "address";
45748
+ readonly name: "sender";
45749
+ readonly type: "address";
45750
+ }, {
45751
+ readonly indexed: false;
45752
+ readonly internalType: "address";
45753
+ readonly name: "delegate";
45754
+ readonly type: "address";
45755
+ }];
45756
+ readonly name: "DelegateSet";
45757
+ readonly type: "event";
45734
45758
  }, {
45735
45759
  readonly anonymous: false;
45736
45760
  readonly inputs: readonly [{
@@ -46062,11 +46086,6 @@ declare class EndpointV2__factory extends ContractFactory {
46062
46086
  readonly internalType: "uint32";
46063
46087
  readonly name: "eid";
46064
46088
  readonly type: "uint32";
46065
- }, {
46066
- readonly indexed: false;
46067
- readonly internalType: "address";
46068
- readonly name: "oldLib";
46069
- readonly type: "address";
46070
46089
  }, {
46071
46090
  readonly indexed: false;
46072
46091
  readonly internalType: "address";
@@ -47306,7 +47325,7 @@ declare class EndpointV2Alt__factory extends ContractFactory {
47306
47325
  }): TransactionRequest;
47307
47326
  attach(address: string): EndpointV2Alt;
47308
47327
  connect(signer: Signer): EndpointV2Alt__factory;
47309
- static readonly bytecode = "0x60e06040526001600d553480156200001657600080fd5b50604051620067ea380380620067ea833981016040819052620000399162000304565b8282816200004733620000b7565b63ffffffff166080526040516200005e90620002d9565b604051809103906000f0801580156200007b573d6000803e3d6000fd5b506001600160a01b031660a0819052620000959062000107565b620000a081620000b7565b50506001600160a01b031660c05250620003839050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011162000278565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000183919062000358565b620001a1576040516331d5783360e11b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620001dc57604051630ea075bf60e21b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5910160405180910390a150565b6000546001600160a01b03163314620002d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b61028f806200655b83390190565b80516001600160a01b0381168114620002ff57600080fd5b919050565b6000806000606084860312156200031a57600080fd5b835163ffffffff811681146200032f57600080fd5b92506200033f60208501620002e7565b91506200034f60408501620002e7565b90509250925092565b6000602082840312156200036b57600080fd5b815180151581146200037c57600080fd5b9392505050565b60805160a05160c051616170620003eb60003960008181610bca015281816133ae015281816144b101526146c8015260006107de01526000818161055f01528181612fed01528181613940015281816139a70152818161424e01526142b501526161706000f3fe6080604052600436106103605760003560e01c80639132e5c3116101c6578063ca5eb5e1116100f7578063e1758bd811610095578063e8964e811161006f578063e8964e8114610c2e578063ef667aa114610c4e578063f2fde38b14610c99578063f64be4c714610cb957600080fd5b8063e1758bd814610bbb578063e1e3a7df14610bee578063e4fe1d9414610c0e57600080fd5b8063d70b8902116100d1578063d70b890214610af2578063dc706a6214610b12578063dc93c8a214610b42578063ddc28c5814610b8e57600080fd5b8063ca5eb5e114610a5b578063cb5026b914610abd578063d4b4ec8f14610ad257600080fd5b8063a7229fd911610164578063aafea3121161013e578063aafea312146109b4578063b96a277f146109d4578063c28e0eed146109f4578063c9fc7bcd14610a1457600080fd5b8063a7229fd914610954578063a825d74714610974578063aafe5e071461099457600080fd5b80639c6d7340116101a05780639c6d7340146108ac5780639d7f9775146108f4578063a0dd43fc14610914578063a718531b1461093457600080fd5b80639132e5c31461085757806391d20fa1146108795780639535ff301461088c57600080fd5b8063587cde1e116102a05780636e83f5bb1161023e578063733180911161021857806373318091146107cc57806379624ca9146108005780637cb59012146108195780638da5cb5b1461083957600080fd5b80636e83f5bb146107225780636f50a80314610781578063715018a6146107b757600080fd5b8063697fe6b61161027a578063697fe6b6146106a25780636a14d715146106c25780636bf73fa3146106e25780636dbd9f901461070257600080fd5b8063587cde1e146105c35780635b17bb70146106115780636750cd4c1461067257600080fd5b80632baf0be71161030d578063402f8468116102e7578063402f8468146104ee57806340f806831461052d578063416ecebf1461054d5780634b4b2efb1461059657600080fd5b80632baf0be7146104455780632e80fbf31461048757806335d330b0146104a757600080fd5b80632637a4501161033e5780632637a450146103d85780632a56c1b0146103f85780632b3197b91461041857600080fd5b80630c0c389e1461036557806314f651a91461037a578063183c834f146103b8575b600080fd5b610378610373366004614eec565b610cef565b005b34801561038657600080fd5b5061038f610e06565b6040805163ffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b3480156103c457600080fd5b506103786103d3366004614f9c565b610e38565b6103eb6103e6366004614fe7565b6111c3565b6040516103af919061503a565b34801561040457600080fd5b5061037861041336600461507d565b61132d565b34801561042457600080fd5b506104386104333660046150ed565b6113eb565b6040516103af91906151af565b34801561045157600080fd5b506104797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6040519081526020016103af565b34801561049357600080fd5b506103786104a23660046151da565b611506565b3480156104b357600080fd5b506104796104c2366004615241565b600c60209081526000948552604080862082529385528385208152918452828420909152825290205481565b3480156104fa57600080fd5b5061050e610509366004615283565b6116dd565b604080516001600160a01b0390931683529015156020830152016103af565b34801561053957600080fd5b506103786105483660046151da565b611774565b34801561055957600080fd5b506105817f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103af565b3480156105a257600080fd5b506105b66105b13660046152ad565b611924565b6040516103af9190615307565b3480156105cf57600080fd5b506105f96105de366004615348565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103af565b34801561061d57600080fd5b5061065961062c366004615363565b600160209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103af565b34801561067e57600080fd5b5061069261068d36600461539f565b611ac8565b60405190151581526020016103af565b3480156106ae57600080fd5b506103786106bd3660046153ba565b611b14565b3480156106ce57600080fd5b506103786106dd366004614f9c565b611b89565b3480156106ee57600080fd5b506103786106fd3660046154b8565b612093565b34801561070e57600080fd5b5061037861071d36600461559c565b6120fd565b34801561072e57600080fd5b5061076261073d36600461539f565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016103af565b34801561078d57600080fd5b506105f961079c36600461539f565b600a602052600090815260409020546001600160a01b031681565b3480156107c357600080fd5b506103786121d1565b3480156107d857600080fd5b506105f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561080c57600080fd5b50600d5460011415610692565b34801561082557600080fd5b5061037861083436600461562d565b6121e5565b34801561084557600080fd5b506000546001600160a01b03166105f9565b34801561086357600080fd5b5061086c6122ea565b6040516103af919061567f565b6103786108873660046156cc565b61234c565b34801561089857600080fd5b506103786108a7366004615777565b61250e565b3480156108b857600080fd5b506106596108c7366004615363565b600360209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b34801561090057600080fd5b5061069261090f366004615777565b612816565b34801561092057600080fd5b5061065961092f366004615363565b6128f2565b34801561094057600080fd5b5061037861094f3660046157ba565b61298b565b34801561096057600080fd5b5061037861096f3660046157e6565b612d9d565b34801561098057600080fd5b5061037861098f366004615804565b612db5565b3480156109a057600080fd5b506104796109af366004615363565b612f4d565b3480156109c057600080fd5b506103786109cf366004615841565b61305c565b3480156109e057600080fd5b506105f96109ef366004615283565b61331c565b348015610a0057600080fd5b50610378610a0f366004615348565b6133a4565b348015610a2057600080fd5b50610479610a2f36600461585d565b600260209081526000948552604080862082529385528385208152918452828420909152825290205481565b348015610a6757600080fd5b50610378610a76366004615348565b336000908152600f6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b348015610ac957600080fd5b50610479600081565b348015610ade57600080fd5b50610378610aed3660046157ba565b613423565b348015610afe57600080fd5b50610378610b0d36600461585d565b613727565b348015610b1e57600080fd5b50610692610b2d366004615348565b60056020526000908152604090205460ff1681565b348015610b4e57600080fd5b50610692610b5d366004615283565b6001600160a01b03918216600090815260066020908152604080832063ffffffff9490941683529290522054161590565b348015610b9a57600080fd5b50610bae610ba9366004614fe7565b61384a565b6040516103af919061589f565b348015610bc757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006105f9565b348015610bfa57600080fd5b50610692610c093660046158b6565b613b75565b348015610c1a57600080fd5b50600e546105f9906001600160a01b031681565b348015610c3a57600080fd5b50610378610c49366004615348565b613c43565b348015610c5a57600080fd5b50610762610c69366004615283565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b348015610ca557600080fd5b50610378610cb4366004615348565b613e48565b348015610cc557600080fd5b506105f9610cd436600461539f565b6009602052600090815260409020546001600160a01b031681565b610d3e86610d0060208a018a61539f565b60208a0135610d1560608c0160408d01615902565b898989604051602001610d2a9392919061591d565b604051602081830303815290604052613eef565b506040517f13137d650000000000000000000000000000000000000000000000000000000081526001600160a01b038716906313137d65903490610d92908b908a908a908a9033908b908b906004016159ba565b6000604051808303818588803b158015610dab57600080fd5b505af1158015610dbf573d6000803e3d6000fd5b50505050507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048787604051610df5929190615a11565b60405180910390a150505050505050565b600080610e16600d546001141590565b610e2257600080610e30565b610e30600d5460a081901c91565b915091509091565b6001600160a01b038216600090815260056020526040902054829060ff16610e8c576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615610f48576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f009190615a35565b6002811115610f1157610f116152d8565b03610f48576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615611016576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015610fbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe09190615a64565b611016576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61101f88614132565b600061102b89896116dd565b9150508015611066576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856000036110c6576001600160a01b038916600090815260086020908152604080832063ffffffff8c168452909152812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001015561115d565b4386116110ff576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600090815260086020908152604080832063ffffffff8d168452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169189169190911781556001018690555b604080516001600160a01b03808c16825263ffffffff8b166020830152891691810191909152606081018790527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928906080015b60405180910390a1505050505050505050565b6111cb614e33565b6111d8602084018461539f565b336001600d5414611215576040517f9633fed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffff000000000000000000000000000000000000000060a083811b919091166001600160a01b03831617600d5561125490860160808701615a81565b80156112695750600e546001600160a01b0316155b156112a0576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806112ad338861419c565b9150915060006112bb614480565b905060006112d76112d260a08b0160808c01615a81565b614529565b90506112e8846040015183836145f7565b600e5460408501516020015161130a916001600160a01b03169083868c61465e565b60408401515161131c9083858b61468b565b50506001600d555095945050505050565b61133685614132565b600083838360405160200161134d9392919061591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506113a98661138e602088018861539f565b60208801356113a360608a0160408b01615902565b85613eef565b507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca0485876040516113db929190615a11565b60405180910390a1505050505050565b6001600160a01b038316600090815260056020526040902054606090849060ff16611442576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9c33abf700000000000000000000000000000000000000000000000000000000815263ffffffff80861660048301526001600160a01b0388811660248401529085166044830152861690639c33abf790606401600060405180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114fc9190810190615b69565b9695505050505050565b61150f85614132565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff8616845290915290205481811461159b576040517fe4bb0ca100000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416118015906115e8575080155b1561162b576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611592565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff8916808652908452938290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905581519081529182018890528101929092526060820152608081018390527faf0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb552929060a0016113db565b6001600160a01b03808316600090815260076020908152604080832063ffffffff86168452909152812054909116908161176d5763ffffffff83166000908152600a60205260409020546001600160a01b0316915081611769576040517ffbc6a95a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060015b9250929050565b61177d85614132565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff86168452909152902054818114611804576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401611592565b80158061184f57506001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416115b15611892576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611592565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff89168086529084528285209490945581519081529182018890528101929092526060820152608081018390527f7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e9060a0016113db565b6001600160a01b038116600090815260026020908152604082208291829061194e9087018761539f565b63ffffffff1663ffffffff16815260200190815260200160002060008560200135815260200190815260200160002060008560400160208101906119929190615902565b67ffffffffffffffff168152602081019190915260400160002054905080158015611a3157506001600160a01b0383166000908152600160209081526040822091906119e09087018761539f565b63ffffffff16815260208082019290925260409081016000908120878401358252909252908190205467ffffffffffffffff1690611a249060608701908701615902565b67ffffffffffffffff1611155b15611a40576002915050611ac2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114801590611aad5750611a8683611a7c602087018761539f565b86602001356128f2565b67ffffffffffffffff16611aa06060860160408701615902565b67ffffffffffffffff1611155b15611abc576001915050611ac2565b60009150505b92915050565b63ffffffff81166000908152600960205260408120546001600160a01b031615801590611ac257505063ffffffff166000908152600a60205260409020546001600160a01b0316151590565b336001600160a01b03168b6001600160a01b03168d6001600160a01b03167f8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b98d8d8d8d8d8d8d8d8d8d604051611b739a99989796959493929190615b9e565b60405180910390a4505050505050505050505050565b6001600160a01b038216600090815260056020526040902054829060ff16158015611bbc57506001600160a01b03811615155b15611bf3576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615611caf576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c679190615a35565b6002811115611c7857611c786152d8565b03611caf576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615611d7d576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015611d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d479190615a64565b611d7d576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d8688614132565b6001600160a01b03808916600090815260076020908152604080832063ffffffff8c16845290915290205481169087168103611dee576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600081815260076020908152604080832063ffffffff8e168085529083529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168d87169081179091558151948552918401929092529284169082015260608101919091527fc0833c35bb1d0beadca36bed54c7098819e109542a6d233d33c7c2039c8ec9aa9060800160405180910390a18515611fe8576001600160a01b0381161580611eb357506001600160a01b038716155b15611eea576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280836001600160a01b031681526020018843611f129190615c36565b90526001600160a01b03808c16600090815260086020908152604080832063ffffffff8f1684528252918290208451815494167fffffffffffffffffffffffff00000000000000000000000000000000000000009094169390931783558301516001909201829055519192507f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611fda918d918d9187916001600160a01b03948516815263ffffffff93909316602084015292166040820152606081019190915260800190565b60405180910390a150612088565b6001600160a01b03898116600081815260086020908152604080832063ffffffff8e1680855290835281842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001018490558151948552918401919091529284169282019290925260608101919091527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928906080016111b0565b505050505050505050565b336001600160a01b03168a6001600160a01b03167f7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c8d8c8c8c8c8c8c8c8c8c6040516120e89a99989796959493929190615c49565b60405180910390a35050505050505050505050565b6001600160a01b038316600090815260056020526040902054839060ff16612151576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61215a85614132565b6040517f20efd7220000000000000000000000000000000000000000000000000000000081526001600160a01b038516906320efd722906121a390889087908790600401615ca8565b600060405180830381600087803b1580156121bd57600080fd5b505af1158015612088573d6000803e3d6000fd5b6121d96146f6565b6121e3600061476a565b565b336000908152600c602090815260408083206001600160a01b03891684528252808320878452825280832061ffff8716845290915290205415612254576040517f895fdbee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181604051612264929190615df9565b60408051918290038220336000818152600c60209081528482206001600160a01b038c16835281528482208a8352815284822061ffff8a168352905292909220557f3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc1916122db919088908890889088908890615e09565b60405180910390a15050505050565b6060600480548060200260200160405190810160405280929190818152602001828054801561234257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612324575b5050505050905090565b6001600160a01b038089166000908152600c60209081526040808320938b168352928152828220898352815282822061ffff8916835290528181205491516123979087908790615df9565b604051809103902090508082146123e4576040517f9e3e05830000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611592565b6001600160a01b03808b166000908152600c60209081526040808320938d168084529382528083208c8452825280832061ffff8c1684529091529081902060019055517fd0a1026000000000000000000000000000000000000000000000000000000000815263d0a1026090349061246c908e908d908c908c9033908d908d90600401615e52565b6000604051808303818588803b15801561248557600080fd5b505af1158015612499573d6000803e3d6000fd5b50505050507e36c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c88a8a8a8a6040516124fa94939291906001600160a01b039485168152929093166020830152604082015261ffff91909116606082015260800190565b60405180910390a150505050505050505050565b6001600160a01b038116600090815260056020526040902054819060ff1615801561254157506001600160a01b03811615155b15612578576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03811615612634576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec9190615a35565b60028111156125fd576125fd6152d8565b03612634576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b03821615612702576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156126a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cc9190615a64565b612702576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270b87614132565b6001600160a01b03808816600090815260066020908152604080832063ffffffff8b16845290915290205481169086168103612773576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03888116600081815260066020908152604080832063ffffffff8d168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958c1695861790558051938452908301919091528101919091527f4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c906060015b60405180910390a15050505050505050565b600080600061282586866116dd565b91509150816001600160a01b0316846001600160a01b03160361284d576001925050506128eb565b600081612882576001600160a01b038716600090815260086020908152604080832063ffffffff8a1684529091529020612898565b63ffffffff86166000908152600b602052604090205b6040805180820190915281546001600160a01b03908116808352600190930154602083015290925086161480156128d25750438160200151115b156128e357600193505050506128eb565b600093505050505b9392505050565b6001600160a01b038316600090815260016020908152604080832063ffffffff86168452825280832084845290915281205467ffffffffffffffff165b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff60018601168452909152902054156129835760010161292f565b949350505050565b6129936146f6565b6001600160a01b038216600090815260056020526040902054829060ff166129e7576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615612aa3576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5b9190615a35565b6002811115612a6c57612a6c6152d8565b03612aa3576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615612b71576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3b9190615a64565b612b71576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600a60205260409020546001600160a01b039081169087168103612bcd576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000818152600a602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038c8116918217909255835194855290851691840191909152908201527f9914edfad6b7eac2e388f49bae232bd0e1954fbe92f5ed1ab975fc270f27cea59060600160405180910390a18515612d0c5763ffffffff88166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316178155612cb18743615c36565b600182018190556040805163ffffffff8c1681526001600160a01b038516602082015280820192909252517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89181900360600190a150612d93565b63ffffffff88166000818152600b6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010183905580519384526001600160a01b038516918401919091528201527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f890606001612804565b5050505050505050565b612da56146f6565b612db08383836147d2565b505050565b612dcc82612dc6602086018661539f565b33612816565b612e02576040517f82ceb50e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526001602090815260408220908290612e2b9087018761539f565b63ffffffff1681526020808201929092526040908101600090812087840135825290925290205467ffffffffffffffff169050612e698484836147f5565b612e9f576040517f098c20b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612eaa848483614890565b612ee0576040517f2923b32a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612f0c83612ef1602087018761539f565b6020870135612f066060890160408a01615902565b86614950565b7f0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4848484604051612f3f93929190615ea6565b60405180910390a150505050565b6001600160a01b038316600090815260036020908152604080832063ffffffff8616845282528083208484529091528120548190612f969067ffffffffffffffff166001615ece565b604080517fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b166020808301919091527fffffffff000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060e090811b821660288501526001600160a01b038b16602c85015289901b16604c830152605080830188905283518084039091018152607090920190925280519101209091505b95945050505050565b6130646146f6565b6001600160a01b038116600090815260056020526040902054819060ff166130b8576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03811615613174576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c9190615a35565b600281111561313d5761313d6152d8565b03613174576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b03821615613242576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156131e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320c9190615a64565b613242576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b03908116908616810361329e576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff871660008181526009602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038b169081179091558251938452908301527f16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f59101610df5565b6001600160a01b03808316600090815260066020908152604080832063ffffffff861684529091529020541680611ac2575063ffffffff81166000908152600960205260409020546001600160a01b031680611ac2576040517fb6f3253d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133ac6146f6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603613417576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613420816149d0565b50565b6001600160a01b038216600090815260056020526040902054829060ff16613477576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615613533576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134eb9190615a35565b60028111156134fc576134fc6152d8565b03613533576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615613601576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156135a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135cb9190615a64565b613601576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136096146f6565b846000036136555763ffffffff87166000908152600b6020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101556136db565b43851161368e576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388161781556001018590555b6040805163ffffffff891681526001600160a01b03881660208201529081018690527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f890606001610df5565b61373084614132565b61373b8484846128f2565b613746906001615ece565b67ffffffffffffffff168167ffffffffffffffff161461379e576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611592565b6001600160a01b038416600081815260016020908152604080832063ffffffff881680855290835281842087855283529281902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716908117909155815193845291830186905282019290925260608101919091527f28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde4890608001612f3f565b604080518082019091526000808252602082015261386e60a0840160808501615a81565b80156138835750600e546001600160a01b0316155b156138ba576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260036020908152604082209082906138e39087018761539f565b63ffffffff1681526020808201929092526040908101600090812087840135825290925290205461391f9067ffffffffffffffff166001615ece565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001856001600160a01b0316815260200186600001602081019061398c919061539f565b63ffffffff16815260200186602001358152602001613a88847f0000000000000000000000000000000000000000000000000000000000000000888a60000160208101906139da919061539f565b8b60200135600085856001600160a01b03861660405160c09390931b7fffffffffffffffff00000000000000000000000000000000000000000000000016602084015260e091821b7fffffffff000000000000000000000000000000000000000000000000000000009081166028850152602c8401919091529085901b16604c8201526050810183905260700160405160208183030381529060405280519060200120905095945050505050565b8152602001613a9a6040880188615eef565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452509293509150613ae79050856109ef602089018961539f565b90506001600160a01b03811663d80e9bd983613b0660608a018a615eef565b613b1660a08c0160808d01615a81565b6040518563ffffffff1660e01b8152600401613b359493929190615f54565b6040805180830381865afa158015613b51573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc919061604b565b6000613b8e84613b88602088018861539f565b85612816565b613b9a57506000612983565b6001600160a01b03841660009081526001602090815260408220908290613bc39089018961539f565b63ffffffff1681526020808201929092526040908101600090812089840135825290925290205467ffffffffffffffff169050613c018686836147f5565b613c0f576000915050612983565b613c1a868683614890565b613c28576000915050612983565b82613c37576000915050612983565b50600195945050505050565b613c4b6146f6565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f97f025840000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015613cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cec9190615a64565b613d22576040517f63aaf06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615613d75576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af591015b60405180910390a150565b613e506146f6565b6001600160a01b038116613ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611592565b6134208161476a565b6001600160a01b038516600090815260016020908152604080832063ffffffff88168452825280832086845290915281205467ffffffffffffffff90811690841681101561404a57600181015b8467ffffffffffffffff168167ffffffffffffffff1611613fe5576001600160a01b038816600090815260026020908152604080832063ffffffff8b1684528252808320898452825280832067ffffffffffffffff85168452909152902054613fdd576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611592565b600101613f3c565b506001600160a01b038716600090815260016020908152604080832063ffffffff8a1684528252808320888452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790555b82516020808501919091206001600160a01b038916600090815260028352604080822063ffffffff8b1683528452808220898352845280822067ffffffffffffffff8916835290935291909120549092508083146140de576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401611592565b50506001600160a01b03909516600090815260026020908152604080832063ffffffff909716835295815285822094825293845284812067ffffffffffffffff909316815291909252918220919091555090565b336001600160a01b0382161480159061416557506001600160a01b038181166000908152600f6020526040902054163314155b15613420576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6141a4614e33565b60008061422d856141b8602087018761539f565b6001600160a01b0391909116600090815260036020908152604080832063ffffffff94909416835292815282822081890135835290522080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff928316019182161790915590565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001876001600160a01b0316815260200186600001602081019061429a919061539f565b63ffffffff168152602001866020013581526020016142e8847f00000000000000000000000000000000000000000000000000000000000000008a8a60000160208101906139da919061539f565b81526020016142fa6040880188615eef565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525092935091506143479050876109ef602089018961539f565b90506000806001600160a01b038316634389e58f8561436960608c018c615eef565b61437960a08e0160808f01615a81565b6040518563ffffffff1660e01b81526004016143989493929190615f54565b6000604051808303816000875af11580156143b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526143fd9190810190616067565b90925090507f1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f8161443160608b018b615eef565b8660405161444294939291906160b6565b60405180910390a1506040805160608101825260a090940151845267ffffffffffffffff909416602084015292820192909252925090509250929050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015614500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452491906160f7565b905090565b600081156145f257600e546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015614592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145b691906160f7565b9050806000036145f2576040517fe801604300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b82518210806146095750808360200151115b15612db057825160208401516040517fe273c847000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052604482015260648101829052608401611592565b831561466f5761466f858386614a3e565b82841015614684576146848582868603614a3e565b5050505050565b34156146c3576040517f1ebf170900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6146f07f00000000000000000000000000000000000000000000000000000000000000008585858561465e565b50505050565b6000546001600160a01b031633146121e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611592565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166147ea57612db08282614a92565b612db0838383614a3e565b6000808267ffffffffffffffff16118061298357506040517fff7bd03d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063ff7bd03d9061484f908790600401616110565b602060405180830381865afa15801561486c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129839190615a64565b600067ffffffffffffffff82166148ad6060860160408701615902565b67ffffffffffffffff16118061298357506001600160a01b038316600090815260026020908152604082209082906148e79088018861539f565b63ffffffff1663ffffffff168152602001908152602001600020600086602001358152602001908152602001600020600086604001602081019061492b9190615902565b67ffffffffffffffff1681526020810191909152604001600020541415949350505050565b80614987576040517fa84ab60d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909416600090815260026020908152604080832063ffffffff909616835294815284822093825292835283812067ffffffffffffffff909216815291522055565b6149d86146f6565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a6239690602001613e3d565b6001600160a01b038216614a7e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612db06001600160a01b0384168383614b71565b6001600160a01b038216614ad2576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614b1f576040519150601f19603f3d011682016040523d82523d6000602084013e614b24565b606091505b5050905080612db0576040517f2c024f920000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401611592565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152612db092869291600091614c2f918516908490614cdc565b9050805160001480614c50575080806020019051810190614c509190615a64565b612db0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611592565b6060612983848460008585600080866001600160a01b03168587604051614d03919061611e565b60006040518083038185875af1925050503d8060008114614d40576040519150601f19603f3d011682016040523d82523d6000602084013e614d45565b606091505b5091509150614d5687838387614d61565b979650505050505050565b60608315614dea578251600003614de3576001600160a01b0385163b614de3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611592565b5081612983565b6129838383815115614dff5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159291906151af565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614e76604051806040016040528060008152602001600081525090565b905290565b600060608284031215614e8d57600080fd5b50919050565b80356001600160a01b03811681146145f257600080fd5b60008083601f840112614ebc57600080fd5b50813567ffffffffffffffff811115614ed457600080fd5b60208301915083602082850101111561176d57600080fd5b600080600080600080600060e0888a031215614f0757600080fd5b614f118989614e7b565b9650614f1f60608901614e93565b95506080880135945060a088013567ffffffffffffffff80821115614f4357600080fd5b614f4f8b838c01614eaa565b909650945060c08a0135915080821115614f6857600080fd5b50614f758a828b01614eaa565b989b979a50959850939692959293505050565b803563ffffffff811681146145f257600080fd5b60008060008060808587031215614fb257600080fd5b614fbb85614e93565b9350614fc960208601614f88565b9250614fd760408601614e93565b9396929550929360600135925050565b60008060408385031215614ffa57600080fd5b823567ffffffffffffffff81111561501157600080fd5b830160a0818603121561502357600080fd5b915061503160208401614e93565b90509250929050565b60006080820190508251825267ffffffffffffffff60208401511660208301526040830151615076604084018280518252602090810151910152565b5092915050565b600080600080600060c0868803121561509557600080fd5b61509e86614e93565b94506150ad8760208801614e7b565b93506080860135925060a086013567ffffffffffffffff8111156150d057600080fd5b6150dc88828901614eaa565b969995985093965092949392505050565b6000806000806080858703121561510357600080fd5b61510c85614e93565b935061511a60208601614e93565b925061512860408601614f88565b915061513660608601614f88565b905092959194509250565b60005b8381101561515c578181015183820152602001615144565b50506000910152565b6000815180845261517d816020860160208601615141565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128eb6020830184615165565b803567ffffffffffffffff811681146145f257600080fd5b600080600080600060a086880312156151f257600080fd5b6151fb86614e93565b945061520960208701614f88565b93506040860135925061521e606087016151c2565b949793965091946080013592915050565b803561ffff811681146145f257600080fd5b6000806000806080858703121561525757600080fd5b61526085614e93565b935061526e60208601614e93565b9250604085013591506151366060860161522f565b6000806040838503121561529657600080fd5b61529f83614e93565b915061503160208401614f88565b600080608083850312156152c057600080fd5b6152ca8484614e7b565b915061503160608401614e93565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310615342577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561535a57600080fd5b6128eb82614e93565b60008060006060848603121561537857600080fd5b61538184614e93565b925061538f60208501614f88565b9150604084013590509250925092565b6000602082840312156153b157600080fd5b6128eb82614f88565b6000806000806000806000806000806000806101208d8f0312156153dd57600080fd5b6153e68d614e93565b9b506153f460208e01614e93565b9a5060408d0135995061540960608e0161522f565b985060808d0135975060a08d0135965067ffffffffffffffff60c08e0135111561543257600080fd5b6154428e60c08f01358f01614eaa565b909650945067ffffffffffffffff60e08e0135111561546057600080fd5b6154708e60e08f01358f01614eaa565b909450925067ffffffffffffffff6101008e0135111561548f57600080fd5b6154a08e6101008f01358f01614eaa565b81935080925050509295989b509295989b509295989b565b60008060008060008060008060008060006101408c8e0312156154da57600080fd5b6154e48d8d614e7b565b9a506154f260608d01614e93565b995060808c0135985060a08c0135975060c08c0135965067ffffffffffffffff8060e08e0135111561552357600080fd5b6155338e60e08f01358f01614eaa565b90975095506101008d013581101561554a57600080fd5b61555b8e6101008f01358f01614eaa565b90955093506101208d013581101561557257600080fd5b506155848d6101208e01358e01614eaa565b81935080925050509295989b509295989b9093969950565b600080600080606085870312156155b257600080fd5b6155bb85614e93565b93506155c960208601614e93565b9250604085013567ffffffffffffffff808211156155e657600080fd5b818701915087601f8301126155fa57600080fd5b81358181111561560957600080fd5b8860208260051b850101111561561e57600080fd5b95989497505060200194505050565b60008060008060006080868803121561564557600080fd5b61564e86614e93565b9450602086013593506156636040870161522f565b9250606086013567ffffffffffffffff8111156150d057600080fd5b6020808252825182820181905260009190848201906040850190845b818110156156c05783516001600160a01b03168352928401929184019160010161569b565b50909695505050505050565b60008060008060008060008060c0898b0312156156e857600080fd5b6156f189614e93565b97506156ff60208a01614e93565b96506040890135955061571460608a0161522f565b9450608089013567ffffffffffffffff8082111561573157600080fd5b61573d8c838d01614eaa565b909650945060a08b013591508082111561575657600080fd5b506157638b828c01614eaa565b999c989b5096995094979396929594505050565b60008060006060848603121561578c57600080fd5b61579584614e93565b92506157a360208501614f88565b91506157b160408501614e93565b90509250925092565b6000806000606084860312156157cf57600080fd5b6157d884614f88565b925061538f60208501614e93565b6000806000606084860312156157fb57600080fd5b6157d884614e93565b600080600060a0848603121561581957600080fd5b6158238585614e7b565b925061583160608501614e93565b9150608084013590509250925092565b6000806040838503121561585457600080fd5b61502383614f88565b6000806000806080858703121561587357600080fd5b61587c85614e93565b935061588a60208601614f88565b925060408501359150615136606086016151c2565b815181526020808301519082015260408101611ac2565b60008060008060c085870312156158cc57600080fd5b6158d68686614e7b565b93506158e460608601614e93565b92506158f260808601614e93565b9396929550929360a00135925050565b60006020828403121561591457600080fd5b6128eb826151c2565b838152818360208301376000910160200190815292915050565b63ffffffff61594582614f88565b1682526020810135602083015267ffffffffffffffff615967604083016151c2565b1660408301525050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6159c48189615937565b86606082015260e0608082015260006159e160e083018789615971565b6001600160a01b03861660a084015282810360c0840152615a03818587615971565b9a9950505050505050505050565b60808101615a1f8285615937565b6001600160a01b03831660608301529392505050565b600060208284031215615a4757600080fd5b8151600381106128eb57600080fd5b801515811461342057600080fd5b600060208284031215615a7657600080fd5b81516128eb81615a56565b600060208284031215615a9357600080fd5b81356128eb81615a56565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112615ade57600080fd5b815167ffffffffffffffff80821115615af957615af9615a9e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715615b3f57615b3f615a9e565b81604052838152866020858801011115615b5857600080fd5b6114fc846020830160208901615141565b600060208284031215615b7b57600080fd5b815167ffffffffffffffff811115615b9257600080fd5b61298384828501615acd565b8a815261ffff8a16602082015288604082015287606082015260e060808201526000615bce60e08301888a615971565b82810360a0840152615be1818789615971565b905082810360c0840152615bf6818587615971565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611ac257611ac2615c07565b6000610120615c58838e615937565b8b60608401528a60808401528960a08401528060c0840152615c7d818401898b615971565b905082810360e0840152615c92818789615971565b9050828103610100840152615bf6818587615971565b600060408083016001600160a01b03871684526020604081860152818683526060925060608601905060608760051b8701018860005b89811015615de9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c3603018112615d3f57600080fd5b8b0163ffffffff80615d5083614f88565b16855280615d5f888401614f88565b168786015250878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112615d9957600080fd5b01858101903567ffffffffffffffff811115615db457600080fd5b803603821315615dc357600080fd5b8789860152615dd58886018284615971565b958701959450505090840190600101615cde565b50909a9950505050505050505050565b8183823760009101908152919050565b60006001600160a01b03808916835280881660208401525085604083015261ffff8516606083015260a06080830152615e4660a083018486615971565b98975050505050505050565b60006001600160a01b03808a16835288602084015260a06040840152615e7c60a08401888a615971565b81871660608501528381036080850152615e97818688615971565b9b9a5050505050505050505050565b60a08101615eb48286615937565b6001600160a01b0393909316606082015260800152919050565b67ffffffffffffffff81811683821601908082111561507657615076615c07565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615f2457600080fd5b83018035915067ffffffffffffffff821115615f3f57600080fd5b60200191503681900382131561176d57600080fd5b6060815267ffffffffffffffff855116606082015263ffffffff60208601511660808201526001600160a01b0360408601511660a082015260006060860151615fa560c084018263ffffffff169052565b50608086015160e083015260a086015161010083015260c086015160e0610120840152615fd6610140840182615165565b90508281036020840152615feb818688615971565b915050613053604083018415159052565b60006040828403121561600e57600080fd5b6040516040810181811067ffffffffffffffff8211171561603157616031615a9e565b604052825181526020928301519281019290925250919050565b60006040828403121561605d57600080fd5b6128eb8383615ffc565b6000806060838503121561607a57600080fd5b6160848484615ffc565b9150604083015167ffffffffffffffff8111156160a057600080fd5b6160ac85828601615acd565b9150509250929050565b6060815260006160c96060830187615165565b82810360208401526160dc818688615971565b9150506001600160a01b038316604083015295945050505050565b60006020828403121561610957600080fd5b5051919050565b60608101611ac28284615937565b60008251616130818460208701615141565b919091019291505056fea26469706673582212202c116bd3120595f7fbe62926ffcb2fa95b4ded144abbc4d8ddeea7f8ca420d4964736f6c63430008160033608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea264697066735822122093dd196808f6be235b3a1fbe17f1b527c6caf755f44b0900d5937f3e0d93500964736f6c63430008160033";
47328
+ static readonly bytecode = "0x60e06040526001600d553480156200001657600080fd5b50604051620067fc380380620067fc833981016040819052620000399162000304565b8282816200004733620000b7565b63ffffffff166080526040516200005e90620002d9565b604051809103906000f0801580156200007b573d6000803e3d6000fd5b506001600160a01b031660a0819052620000959062000107565b620000a081620000b7565b50506001600160a01b031660c05250620003839050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200011162000278565b6040516301ffc9a760e01b81526325fc096160e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156200015d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000183919062000358565b620001a1576040516331d5783360e11b815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620001dc57604051630ea075bf60e21b815260040160405180910390fd5b6001600160a01b0381166000818152600560209081526040808320805460ff191660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180546001600160a01b0319168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5910160405180910390a150565b6000546001600160a01b03163314620002d75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b61028f806200656d83390190565b80516001600160a01b0381168114620002ff57600080fd5b919050565b6000806000606084860312156200031a57600080fd5b835163ffffffff811681146200032f57600080fd5b92506200033f60208501620002e7565b91506200034f60408501620002e7565b90509250925092565b6000602082840312156200036b57600080fd5b815180151581146200037c57600080fd5b9392505050565b60805160a05160c051616182620003eb60003960008181610b8801528181613348015281816144c301526146da015260006107de01526000818161055f01528181612f8901528181613959015281816139c00152818161426001526142c701526161826000f3fe6080604052600436106103605760003560e01c80639132e5c3116101c6578063ca5eb5e1116100f7578063e1758bd811610095578063e8964e811161006f578063e8964e8114610bec578063ef667aa114610c0c578063f2fde38b14610c57578063f64be4c714610c7757600080fd5b8063e1758bd814610b79578063e1e3a7df14610bac578063e4fe1d9414610bcc57600080fd5b8063d70b8902116100d1578063d70b890214610ab0578063dc706a6214610ad0578063dc93c8a214610b00578063ddc28c5814610b4c57600080fd5b8063ca5eb5e114610a5b578063cb5026b914610a7b578063d4b4ec8f14610a9057600080fd5b8063a7229fd911610164578063aafea3121161013e578063aafea312146109b4578063b96a277f146109d4578063c28e0eed146109f4578063c9fc7bcd14610a1457600080fd5b8063a7229fd914610954578063a825d74714610974578063aafe5e071461099457600080fd5b80639c6d7340116101a05780639c6d7340146108ac5780639d7f9775146108f4578063a0dd43fc14610914578063a718531b1461093457600080fd5b80639132e5c31461085757806391d20fa1146108795780639535ff301461088c57600080fd5b8063587cde1e116102a05780636e83f5bb1161023e578063733180911161021857806373318091146107cc57806379624ca9146108005780637cb59012146108195780638da5cb5b1461083957600080fd5b80636e83f5bb146107225780636f50a80314610781578063715018a6146107b757600080fd5b8063697fe6b61161027a578063697fe6b6146106a25780636a14d715146106c25780636bf73fa3146106e25780636dbd9f901461070257600080fd5b8063587cde1e146105c35780635b17bb70146106115780636750cd4c1461067257600080fd5b80632baf0be71161030d578063402f8468116102e7578063402f8468146104ee57806340f806831461052d578063416ecebf1461054d5780634b4b2efb1461059657600080fd5b80632baf0be7146104455780632e80fbf31461048757806335d330b0146104a757600080fd5b80632637a4501161033e5780632637a450146103d85780632a56c1b0146103f85780632b3197b91461041857600080fd5b80630c0c389e1461036557806314f651a91461037a578063183c834f146103b8575b600080fd5b610378610373366004614efe565b610cad565b005b34801561038657600080fd5b5061038f610dc4565b6040805163ffffffff90931683526001600160a01b039091166020830152015b60405180910390f35b3480156103c457600080fd5b506103786103d3366004614fae565b610df6565b6103eb6103e6366004614ff9565b611181565b6040516103af919061504c565b34801561040457600080fd5b5061037861041336600461508f565b6112eb565b34801561042457600080fd5b506104386104333660046150ff565b6113a9565b6040516103af91906151c1565b34801561045157600080fd5b506104797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6040519081526020016103af565b34801561049357600080fd5b506103786104a23660046151ec565b6114c4565b3480156104b357600080fd5b506104796104c2366004615253565b600c60209081526000948552604080862082529385528385208152918452828420909152825290205481565b3480156104fa57600080fd5b5061050e610509366004615295565b61169b565b604080516001600160a01b0390931683529015156020830152016103af565b34801561053957600080fd5b506103786105483660046151ec565b611732565b34801561055957600080fd5b506105817f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103af565b3480156105a257600080fd5b506105b66105b13660046152bf565b6118e2565b6040516103af9190615319565b3480156105cf57600080fd5b506105f96105de36600461535a565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103af565b34801561061d57600080fd5b5061065961062c366004615375565b600160209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103af565b34801561067e57600080fd5b5061069261068d3660046153b1565b611a86565b60405190151581526020016103af565b3480156106ae57600080fd5b506103786106bd3660046153cc565b611ad2565b3480156106ce57600080fd5b506103786106dd366004614fae565b611b47565b3480156106ee57600080fd5b506103786106fd3660046154ca565b612047565b34801561070e57600080fd5b5061037861071d3660046155ae565b6120b1565b34801561072e57600080fd5b5061076261073d3660046153b1565b600b60205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b0390931683526020830191909152016103af565b34801561078d57600080fd5b506105f961079c3660046153b1565b600a602052600090815260409020546001600160a01b031681565b3480156107c357600080fd5b50610378612185565b3480156107d857600080fd5b506105f97f000000000000000000000000000000000000000000000000000000000000000081565b34801561080c57600080fd5b50600d5460011415610692565b34801561082557600080fd5b5061037861083436600461563f565b612199565b34801561084557600080fd5b506000546001600160a01b03166105f9565b34801561086357600080fd5b5061086c61229e565b6040516103af9190615691565b6103786108873660046156de565b612300565b34801561089857600080fd5b506103786108a7366004615789565b6124c2565b3480156108b857600080fd5b506106596108c7366004615375565b600360209081526000938452604080852082529284528284209052825290205467ffffffffffffffff1681565b34801561090057600080fd5b5061069261090f366004615789565b6127bb565b34801561092057600080fd5b5061065961092f366004615375565b612897565b34801561094057600080fd5b5061037861094f3660046157cc565b612930565b34801561096057600080fd5b5061037861096f3660046157f8565b612d39565b34801561098057600080fd5b5061037861098f366004615816565b612d51565b3480156109a057600080fd5b506104796109af366004615375565b612ee9565b3480156109c057600080fd5b506103786109cf366004615853565b612ff8565b3480156109e057600080fd5b506105f96109ef366004615295565b6132b6565b348015610a0057600080fd5b50610378610a0f36600461535a565b61333e565b348015610a2057600080fd5b50610479610a2f36600461586f565b600260209081526000948552604080862082529385528385208152918452828420909152825290205481565b348015610a6757600080fd5b50610378610a7636600461535a565b6133bd565b348015610a8757600080fd5b50610479600081565b348015610a9c57600080fd5b50610378610aab3660046157cc565b61343c565b348015610abc57600080fd5b50610378610acb36600461586f565b613740565b348015610adc57600080fd5b50610692610aeb36600461535a565b60056020526000908152604090205460ff1681565b348015610b0c57600080fd5b50610692610b1b366004615295565b6001600160a01b03918216600090815260066020908152604080832063ffffffff9490941683529290522054161590565b348015610b5857600080fd5b50610b6c610b67366004614ff9565b613863565b6040516103af91906158b1565b348015610b8557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006105f9565b348015610bb857600080fd5b50610692610bc73660046158c8565b613b8e565b348015610bd857600080fd5b50600e546105f9906001600160a01b031681565b348015610bf857600080fd5b50610378610c0736600461535a565b613c5c565b348015610c1857600080fd5b50610762610c27366004615295565b6008602090815260009283526040808420909152908252902080546001909101546001600160a01b039091169082565b348015610c6357600080fd5b50610378610c7236600461535a565b613e5a565b348015610c8357600080fd5b506105f9610c923660046153b1565b6009602052600090815260409020546001600160a01b031681565b610cfc86610cbe60208a018a6153b1565b60208a0135610cd360608c0160408d01615914565b898989604051602001610ce89392919061592f565b604051602081830303815290604052613f01565b506040517f13137d650000000000000000000000000000000000000000000000000000000081526001600160a01b038716906313137d65903490610d50908b908a908a908a9033908b908b906004016159cc565b6000604051808303818588803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b50505050507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048787604051610db3929190615a23565b60405180910390a150505050505050565b600080610dd4600d546001141590565b610de057600080610dee565b610dee600d5460a081901c91565b915091509091565b6001600160a01b038216600090815260056020526040902054829060ff16610e4a576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615610f06576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190615a47565b6002811115610ecf57610ecf6152ea565b03610f06576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615610fd4576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e9190615a76565b610fd4576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fdd88614144565b6000610fe9898961169b565b9150508015611024576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003611084576001600160a01b038916600090815260086020908152604080832063ffffffff8c168452909152812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001015561111b565b4386116110bd576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600090815260086020908152604080832063ffffffff8d168452909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169189169190911781556001018690555b604080516001600160a01b03808c16825263ffffffff8b166020830152891691810191909152606081018790527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928906080015b60405180910390a1505050505050505050565b611189614e45565b61119660208401846153b1565b336001600d54146111d3576040517f9633fed300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffff000000000000000000000000000000000000000060a083811b919091166001600160a01b03831617600d5561121290860160808701615a93565b80156112275750600e546001600160a01b0316155b1561125e576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061126b33886141ae565b915091506000611279614492565b9050600061129561129060a08b0160808c01615a93565b61453b565b90506112a684604001518383614609565b600e546040850151602001516112c8916001600160a01b03169083868c614670565b6040840151516112da9083858b61469d565b50506001600d555095945050505050565b6112f485614144565b600083838360405160200161130b9392919061592f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506113678661134c60208801886153b1565b602088013561136160608a0160408b01615914565b85613f01565b507f3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca048587604051611399929190615a23565b60405180910390a1505050505050565b6001600160a01b038316600090815260056020526040902054606090849060ff16611400576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f9c33abf700000000000000000000000000000000000000000000000000000000815263ffffffff80861660048301526001600160a01b0388811660248401529085166044830152861690639c33abf790606401600060405180830381865afa158015611474573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114ba9190810190615b7b565b9695505050505050565b6114cd85614144565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff86168452909152902054818114611559576040517fe4bb0ca100000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416118015906115a6575080155b156115e9576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611550565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff8916808652908452938290207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905581519081529182018890528101929092526060820152608081018390527faf0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb552929060a001611399565b6001600160a01b03808316600090815260076020908152604080832063ffffffff86168452909152812054909116908161172b5763ffffffff83166000908152600a60205260409020546001600160a01b0316915081611727576040517ffbc6a95a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060015b9250929050565b61173b85614144565b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff861684529091529020548181146117c2576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401611550565b80158061180d57506001600160a01b038616600090815260016020908152604080832063ffffffff89168452825280832087845290915290205467ffffffffffffffff908116908416115b15611850576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff84166004820152602401611550565b6001600160a01b038616600081815260026020908152604080832063ffffffff8a16808552908352818420898552835281842067ffffffffffffffff89168086529084528285209490945581519081529182018890528101929092526060820152608081018390527f7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e9060a001611399565b6001600160a01b038116600090815260026020908152604082208291829061190c908701876153b1565b63ffffffff1663ffffffff16815260200190815260200160002060008560200135815260200190815260200160002060008560400160208101906119509190615914565b67ffffffffffffffff1681526020810191909152604001600020549050801580156119ef57506001600160a01b03831660009081526001602090815260408220919061199e908701876153b1565b63ffffffff16815260208082019290925260409081016000908120878401358252909252908190205467ffffffffffffffff16906119e29060608701908701615914565b67ffffffffffffffff1611155b156119fe576002915050611a80565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114801590611a6b5750611a4483611a3a60208701876153b1565b8660200135612897565b67ffffffffffffffff16611a5e6060860160408701615914565b67ffffffffffffffff1611155b15611a7a576001915050611a80565b60009150505b92915050565b63ffffffff81166000908152600960205260408120546001600160a01b031615801590611a8057505063ffffffff166000908152600a60205260409020546001600160a01b0316151590565b336001600160a01b03168b6001600160a01b03168d6001600160a01b03167f8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b98d8d8d8d8d8d8d8d8d8d604051611b319a99989796959493929190615bb0565b60405180910390a4505050505050505050505050565b6001600160a01b038216600090815260056020526040902054829060ff16158015611b7a57506001600160a01b03811615155b15611bb1576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615611c6d576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c259190615a47565b6002811115611c3657611c366152ea565b03611c6d576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615611d3b576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015611ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d059190615a76565b611d3b576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d4488614144565b6001600160a01b03808916600090815260076020908152604080832063ffffffff8c16845290915290205481169087168103611dac576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03898116600081815260076020908152604080832063ffffffff8e168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958d1695861790558051938452908301919091528101919091527fcd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c29060600160405180910390a18515611f9c576001600160a01b0381161580611e6757506001600160a01b038716155b15611e9e576040517f78142dd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280836001600160a01b031681526020018843611ec69190615c48565b90526001600160a01b03808c16600090815260086020908152604080832063ffffffff8f1684528252918290208451815494167fffffffffffffffffffffffff00000000000000000000000000000000000000009094169390931783558301516001909201829055519192507f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb2092891611f8e918d918d9187916001600160a01b03948516815263ffffffff93909316602084015292166040820152606081019190915260800190565b60405180910390a15061203c565b6001600160a01b03898116600081815260086020908152604080832063ffffffff8e1680855290835281842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001018490558151948552918401919091529284169282019290925260608101919091527f4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb209289060800161116e565b505050505050505050565b336001600160a01b03168a6001600160a01b03167f7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c8d8c8c8c8c8c8c8c8c8c60405161209c9a99989796959493929190615c5b565b60405180910390a35050505050505050505050565b6001600160a01b038316600090815260056020526040902054839060ff16612105576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61210e85614144565b6040517f20efd7220000000000000000000000000000000000000000000000000000000081526001600160a01b038516906320efd7229061215790889087908790600401615cba565b600060405180830381600087803b15801561217157600080fd5b505af115801561203c573d6000803e3d6000fd5b61218d614708565b612197600061477c565b565b336000908152600c602090815260408083206001600160a01b03891684528252808320878452825280832061ffff8716845290915290205415612208576040517f895fdbee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181604051612218929190615e0b565b60408051918290038220336000818152600c60209081528482206001600160a01b038c16835281528482208a8352815284822061ffff8a168352905292909220557f3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc19161228f919088908890889088908890615e1b565b60405180910390a15050505050565b606060048054806020026020016040519081016040528092919081815260200182805480156122f657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122d8575b5050505050905090565b6001600160a01b038089166000908152600c60209081526040808320938b168352928152828220898352815282822061ffff89168352905281812054915161234b9087908790615e0b565b60405180910390209050808214612398576040517f9e3e05830000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401611550565b6001600160a01b03808b166000908152600c60209081526040808320938d168084529382528083208c8452825280832061ffff8c1684529091529081902060019055517fd0a1026000000000000000000000000000000000000000000000000000000000815263d0a10260903490612420908e908d908c908c9033908d908d90600401615e64565b6000604051808303818588803b15801561243957600080fd5b505af115801561244d573d6000803e3d6000fd5b50505050507e36c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c88a8a8a8a6040516124ae94939291906001600160a01b039485168152929093166020830152604082015261ffff91909116606082015260800190565b60405180910390a150505050505050505050565b6001600160a01b038116600090815260056020526040902054819060ff161580156124f557506001600160a01b03811615155b1561252c576040517f4fb58e1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b038116156125e8576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a09190615a47565b60028111156125b1576125b16152ea565b036125e8576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b038216156126b6576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa15801561265c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126809190615a76565b6126b6576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6126bf87614144565b6001600160a01b03878116600090815260066020908152604080832063ffffffff8b168452909152902054818716911603612726576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03878116600081815260066020908152604080832063ffffffff8c168085529083529281902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016958b1695861790558051938452908301919091528101919091527f4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c90606001610db3565b60008060006127ca868661169b565b91509150816001600160a01b0316846001600160a01b0316036127f257600192505050612890565b600081612827576001600160a01b038716600090815260086020908152604080832063ffffffff8a168452909152902061283d565b63ffffffff86166000908152600b602052604090205b6040805180820190915281546001600160a01b03908116808352600190930154602083015290925086161480156128775750438160200151115b156128885760019350505050612890565b600093505050505b9392505050565b6001600160a01b038316600090815260016020908152604080832063ffffffff86168452825280832084845290915281205467ffffffffffffffff165b6001600160a01b038516600090815260026020908152604080832063ffffffff881684528252808320868452825280832067ffffffffffffffff6001860116845290915290205415612928576001016128d4565b949350505050565b612938614708565b6001600160a01b038216600090815260056020526040902054829060ff1661298c576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b03811615612a48576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a009190615a47565b6002811115612a1157612a116152ea565b03612a48576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b03821615612b16576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015612abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae09190615a76565b612b16576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600a60205260409020546001600160a01b039081169087168103612b72576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff88166000818152600a602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038c169081179091558251938452908301527fc16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec910160405180910390a18515612ca45763ffffffff88166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316178155612c498743615c48565b600182018190556040805163ffffffff8c1681526001600160a01b038516602082015280820192909252517f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89181900360600190a150612d2f565b63ffffffff88166000818152600b6020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560010183905580519384526001600160a01b038516918401919091528201527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f89060600160405180910390a15b5050505050505050565b612d41614708565b612d4c8383836147e4565b505050565b612d6882612d6260208601866153b1565b336127bb565b612d9e576040517f82ceb50e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526001602090815260408220908290612dc7908701876153b1565b63ffffffff1681526020808201929092526040908101600090812087840135825290925290205467ffffffffffffffff169050612e05848483614807565b612e3b576040517f098c20b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e468484836148a2565b612e7c576040517f2923b32a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ea883612e8d60208701876153b1565b6020870135612ea26060890160408a01615914565b86614962565b7f0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4848484604051612edb93929190615eb8565b60405180910390a150505050565b6001600160a01b038316600090815260036020908152604080832063ffffffff8616845282528083208484529091528120548190612f329067ffffffffffffffff166001615ee0565b604080517fffffffffffffffff00000000000000000000000000000000000000000000000060c084901b166020808301919091527fffffffff000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060e090811b821660288501526001600160a01b038b16602c85015289901b16604c830152605080830188905283518084039091018152607090920190925280519101209091505b95945050505050565b613000614708565b6001600160a01b038116600090815260056020526040902054819060ff16613054576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816001600160a01b03811615613110576001816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c89190615a47565b60028111156130d9576130d96152ea565b03613110576040517f3885d60300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82846001600160a01b038216156131de576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa158015613184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a89190615a76565b6131de576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b03808716911603613238576040517fc23f6ccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff861660008181526009602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a169081179091558251938452908301527f16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f59101611399565b6001600160a01b03808316600090815260066020908152604080832063ffffffff861684529091529020541680611a80575063ffffffff81166000908152600960205260409020546001600160a01b031680611a80576040517fb6f3253d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613346614708565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316036133b1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133ba816149e2565b50565b336000818152600f602090815260409182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386169081179091558251938452908301527f6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d798398191015b60405180910390a150565b6001600160a01b038216600090815260056020526040902054829060ff16613490576040517f8cd5e2c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0381161561354c576000816001600160a01b0316631881d94d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135049190615a47565b6002811115613515576135156152ea565b0361354c576040517f7865362200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83856001600160a01b0382161561361a576040517f6750cd4c00000000000000000000000000000000000000000000000000000000815263ffffffff821660048201526001600160a01b03831690636750cd4c90602401602060405180830381865afa1580156135c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e49190615a76565b61361a576040517f9153304b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613622614708565b8460000361366e5763ffffffff87166000908152600b6020526040812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600101556136f4565b4385116136a7576040517fd36c850000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff87166000908152600b6020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0388161781556001018590555b6040805163ffffffff891681526001600160a01b03881660208201529081018690527f55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f890606001610db3565b61374984614144565b613754848484612897565b61375f906001615ee0565b67ffffffffffffffff168167ffffffffffffffff16146137b7576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611550565b6001600160a01b038416600081815260016020908152604080832063ffffffff881680855290835281842087855283529281902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716908117909155815193845291830186905282019290925260608101919091527f28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde4890608001612edb565b604080518082019091526000808252602082015261388760a0840160808501615a93565b801561389c5750600e546001600160a01b0316155b156138d3576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260036020908152604082209082906138fc908701876153b1565b63ffffffff168152602080820192909252604090810160009081208784013582529092529020546139389067ffffffffffffffff166001615ee0565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001856001600160a01b031681526020018660000160208101906139a591906153b1565b63ffffffff16815260200186602001358152602001613aa1847f0000000000000000000000000000000000000000000000000000000000000000888a60000160208101906139f391906153b1565b8b60200135600085856001600160a01b03861660405160c09390931b7fffffffffffffffff00000000000000000000000000000000000000000000000016602084015260e091821b7fffffffff000000000000000000000000000000000000000000000000000000009081166028850152602c8401919091529085901b16604c8201526050810183905260700160405160208183030381529060405280519060200120905095945050505050565b8152602001613ab36040880188615f01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452509293509150613b009050856109ef60208901896153b1565b90506001600160a01b03811663d80e9bd983613b1f60608a018a615f01565b613b2f60a08c0160808d01615a93565b6040518563ffffffff1660e01b8152600401613b4e9493929190615f66565b6040805180830381865afa158015613b6a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba919061605d565b6000613ba784613ba160208801886153b1565b856127bb565b613bb357506000612928565b6001600160a01b03841660009081526001602090815260408220908290613bdc908901896153b1565b63ffffffff1681526020808201929092526040908101600090812089840135825290925290205467ffffffffffffffff169050613c1a868683614807565b613c28576000915050612928565b613c338686836148a2565b613c41576000915050612928565b82613c50576000915050612928565b50600195945050505050565b613c64614708565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f97f025840000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015613ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d059190615a76565b613d3b576040517f63aaf06600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615613d8e576040517f3a81d6fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559093527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182527f6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af59101613431565b613e62614708565b6001600160a01b038116613ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611550565b6133ba8161477c565b6001600160a01b038516600090815260016020908152604080832063ffffffff88168452825280832086845290915281205467ffffffffffffffff90811690841681101561405c57600181015b8467ffffffffffffffff168167ffffffffffffffff1611613ff7576001600160a01b038816600090815260026020908152604080832063ffffffff8b1684528252808320898452825280832067ffffffffffffffff85168452909152902054613fef576040517f5c33785a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401611550565b600101613f4e565b506001600160a01b038716600090815260016020908152604080832063ffffffff8a1684528252808320888452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff86161790555b82516020808501919091206001600160a01b038916600090815260028352604080822063ffffffff8b1683528452808220898352845280822067ffffffffffffffff8916835290935291909120549092508083146140f0576040517fe4bb0ca10000000000000000000000000000000000000000000000000000000081526004810182905260248101849052604401611550565b50506001600160a01b03909516600090815260026020908152604080832063ffffffff909716835295815285822094825293845284812067ffffffffffffffff909316815291909252918220919091555090565b336001600160a01b0382161480159061417757506001600160a01b038181166000908152600f6020526040902054163314155b156133ba576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6141b6614e45565b60008061423f856141ca60208701876153b1565b6001600160a01b0391909116600090815260036020908152604080832063ffffffff94909416835292815282822081890135835290522080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008116600167ffffffffffffffff928316019182161790915590565b905060006040518060e001604052808367ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000063ffffffff168152602001876001600160a01b031681526020018660000160208101906142ac91906153b1565b63ffffffff168152602001866020013581526020016142fa847f00000000000000000000000000000000000000000000000000000000000000008a8a60000160208101906139f391906153b1565b815260200161430c6040880188615f01565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939094525092935091506143599050876109ef60208901896153b1565b90506000806001600160a01b038316634389e58f8561437b60608c018c615f01565b61438b60a08e0160808f01615a93565b6040518563ffffffff1660e01b81526004016143aa9493929190615f66565b6000604051808303816000875af11580156143c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261440f9190810190616079565b90925090507f1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f8161444360608b018b615f01565b8660405161445494939291906160c8565b60405180910390a1506040805160608101825260a090940151845267ffffffffffffffff909416602084015292820192909252925090509250929050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015614512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145369190616109565b905090565b6000811561460457600e546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156145a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c89190616109565b905080600003614604576040517fe801604300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b825182108061461b5750808360200151115b15612d4c57825160208401516040517fe273c847000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052604482015260648101829052608401611550565b831561468157614681858386614a50565b82841015614696576146968582868603614a50565b5050505050565b34156146d5576040517f1ebf170900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6147027f000000000000000000000000000000000000000000000000000000000000000085858585614670565b50505050565b6000546001600160a01b03163314612197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611550565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166147fc57612d4c8282614aa4565b612d4c838383614a50565b6000808267ffffffffffffffff16118061292857506040517fff7bd03d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063ff7bd03d90614861908790600401616122565b602060405180830381865afa15801561487e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129289190615a76565b600067ffffffffffffffff82166148bf6060860160408701615914565b67ffffffffffffffff16118061292857506001600160a01b038316600090815260026020908152604082209082906148f9908801886153b1565b63ffffffff1663ffffffff168152602001908152602001600020600086602001358152602001908152602001600020600086604001602081019061493d9190615914565b67ffffffffffffffff1681526020810191909152604001600020541415949350505050565b80614999576040517fa84ab60d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909416600090815260026020908152604080832063ffffffff909616835294815284822093825292835283812067ffffffffffffffff909216815291522055565b6149ea614708565b600e80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a6239690602001613431565b6001600160a01b038216614a90576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d4c6001600160a01b0384168383614b83565b6001600160a01b038216614ae4576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614b31576040519150601f19603f3d011682016040523d82523d6000602084013e614b36565b606091505b5050905080612d4c576040517f2c024f920000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401611550565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152612d4c92869291600091614c41918516908490614cee565b9050805160001480614c62575080806020019051810190614c629190615a76565b612d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611550565b6060612928848460008585600080866001600160a01b03168587604051614d159190616130565b60006040518083038185875af1925050503d8060008114614d52576040519150601f19603f3d011682016040523d82523d6000602084013e614d57565b606091505b5091509150614d6887838387614d73565b979650505050505050565b60608315614dfc578251600003614df5576001600160a01b0385163b614df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611550565b5081612928565b6129288383815115614e115781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155091906151c1565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614e88604051806040016040528060008152602001600081525090565b905290565b600060608284031215614e9f57600080fd5b50919050565b80356001600160a01b038116811461460457600080fd5b60008083601f840112614ece57600080fd5b50813567ffffffffffffffff811115614ee657600080fd5b60208301915083602082850101111561172b57600080fd5b600080600080600080600060e0888a031215614f1957600080fd5b614f238989614e8d565b9650614f3160608901614ea5565b95506080880135945060a088013567ffffffffffffffff80821115614f5557600080fd5b614f618b838c01614ebc565b909650945060c08a0135915080821115614f7a57600080fd5b50614f878a828b01614ebc565b989b979a50959850939692959293505050565b803563ffffffff8116811461460457600080fd5b60008060008060808587031215614fc457600080fd5b614fcd85614ea5565b9350614fdb60208601614f9a565b9250614fe960408601614ea5565b9396929550929360600135925050565b6000806040838503121561500c57600080fd5b823567ffffffffffffffff81111561502357600080fd5b830160a0818603121561503557600080fd5b915061504360208401614ea5565b90509250929050565b60006080820190508251825267ffffffffffffffff60208401511660208301526040830151615088604084018280518252602090810151910152565b5092915050565b600080600080600060c086880312156150a757600080fd5b6150b086614ea5565b94506150bf8760208801614e8d565b93506080860135925060a086013567ffffffffffffffff8111156150e257600080fd5b6150ee88828901614ebc565b969995985093965092949392505050565b6000806000806080858703121561511557600080fd5b61511e85614ea5565b935061512c60208601614ea5565b925061513a60408601614f9a565b915061514860608601614f9a565b905092959194509250565b60005b8381101561516e578181015183820152602001615156565b50506000910152565b6000815180845261518f816020860160208601615153565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128906020830184615177565b803567ffffffffffffffff8116811461460457600080fd5b600080600080600060a0868803121561520457600080fd5b61520d86614ea5565b945061521b60208701614f9a565b935060408601359250615230606087016151d4565b949793965091946080013592915050565b803561ffff8116811461460457600080fd5b6000806000806080858703121561526957600080fd5b61527285614ea5565b935061528060208601614ea5565b92506040850135915061514860608601615241565b600080604083850312156152a857600080fd5b6152b183614ea5565b915061504360208401614f9a565b600080608083850312156152d257600080fd5b6152dc8484614e8d565b915061504360608401614ea5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310615354577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561536c57600080fd5b61289082614ea5565b60008060006060848603121561538a57600080fd5b61539384614ea5565b92506153a160208501614f9a565b9150604084013590509250925092565b6000602082840312156153c357600080fd5b61289082614f9a565b6000806000806000806000806000806000806101208d8f0312156153ef57600080fd5b6153f88d614ea5565b9b5061540660208e01614ea5565b9a5060408d0135995061541b60608e01615241565b985060808d0135975060a08d0135965067ffffffffffffffff60c08e0135111561544457600080fd5b6154548e60c08f01358f01614ebc565b909650945067ffffffffffffffff60e08e0135111561547257600080fd5b6154828e60e08f01358f01614ebc565b909450925067ffffffffffffffff6101008e013511156154a157600080fd5b6154b28e6101008f01358f01614ebc565b81935080925050509295989b509295989b509295989b565b60008060008060008060008060008060006101408c8e0312156154ec57600080fd5b6154f68d8d614e8d565b9a5061550460608d01614ea5565b995060808c0135985060a08c0135975060c08c0135965067ffffffffffffffff8060e08e0135111561553557600080fd5b6155458e60e08f01358f01614ebc565b90975095506101008d013581101561555c57600080fd5b61556d8e6101008f01358f01614ebc565b90955093506101208d013581101561558457600080fd5b506155968d6101208e01358e01614ebc565b81935080925050509295989b509295989b9093969950565b600080600080606085870312156155c457600080fd5b6155cd85614ea5565b93506155db60208601614ea5565b9250604085013567ffffffffffffffff808211156155f857600080fd5b818701915087601f83011261560c57600080fd5b81358181111561561b57600080fd5b8860208260051b850101111561563057600080fd5b95989497505060200194505050565b60008060008060006080868803121561565757600080fd5b61566086614ea5565b94506020860135935061567560408701615241565b9250606086013567ffffffffffffffff8111156150e257600080fd5b6020808252825182820181905260009190848201906040850190845b818110156156d25783516001600160a01b0316835292840192918401916001016156ad565b50909695505050505050565b60008060008060008060008060c0898b0312156156fa57600080fd5b61570389614ea5565b975061571160208a01614ea5565b96506040890135955061572660608a01615241565b9450608089013567ffffffffffffffff8082111561574357600080fd5b61574f8c838d01614ebc565b909650945060a08b013591508082111561576857600080fd5b506157758b828c01614ebc565b999c989b5096995094979396929594505050565b60008060006060848603121561579e57600080fd5b6157a784614ea5565b92506157b560208501614f9a565b91506157c360408501614ea5565b90509250925092565b6000806000606084860312156157e157600080fd5b6157ea84614f9a565b92506153a160208501614ea5565b60008060006060848603121561580d57600080fd5b6157ea84614ea5565b600080600060a0848603121561582b57600080fd5b6158358585614e8d565b925061584360608501614ea5565b9150608084013590509250925092565b6000806040838503121561586657600080fd5b61503583614f9a565b6000806000806080858703121561588557600080fd5b61588e85614ea5565b935061589c60208601614f9a565b925060408501359150615148606086016151d4565b815181526020808301519082015260408101611a80565b60008060008060c085870312156158de57600080fd5b6158e88686614e8d565b93506158f660608601614ea5565b925061590460808601614ea5565b9396929550929360a00135925050565b60006020828403121561592657600080fd5b612890826151d4565b838152818360208301376000910160200190815292915050565b63ffffffff61595782614f9a565b1682526020810135602083015267ffffffffffffffff615979604083016151d4565b1660408301525050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6159d68189615949565b86606082015260e0608082015260006159f360e083018789615983565b6001600160a01b03861660a084015282810360c0840152615a15818587615983565b9a9950505050505050505050565b60808101615a318285615949565b6001600160a01b03831660608301529392505050565b600060208284031215615a5957600080fd5b81516003811061289057600080fd5b80151581146133ba57600080fd5b600060208284031215615a8857600080fd5b815161289081615a68565b600060208284031215615aa557600080fd5b813561289081615a68565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112615af057600080fd5b815167ffffffffffffffff80821115615b0b57615b0b615ab0565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715615b5157615b51615ab0565b81604052838152866020858801011115615b6a57600080fd5b6114ba846020830160208901615153565b600060208284031215615b8d57600080fd5b815167ffffffffffffffff811115615ba457600080fd5b61292884828501615adf565b8a815261ffff8a16602082015288604082015287606082015260e060808201526000615be060e08301888a615983565b82810360a0840152615bf3818789615983565b905082810360c0840152615c08818587615983565b9d9c50505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611a8057611a80615c19565b6000610120615c6a838e615949565b8b60608401528a60808401528960a08401528060c0840152615c8f818401898b615983565b905082810360e0840152615ca4818789615983565b9050828103610100840152615c08818587615983565b600060408083016001600160a01b03871684526020604081860152818683526060925060608601905060608760051b8701018860005b89811015615dfb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18c3603018112615d5157600080fd5b8b0163ffffffff80615d6283614f9a565b16855280615d71888401614f9a565b168786015250878101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112615dab57600080fd5b01858101903567ffffffffffffffff811115615dc657600080fd5b803603821315615dd557600080fd5b8789860152615de78886018284615983565b958701959450505090840190600101615cf0565b50909a9950505050505050505050565b8183823760009101908152919050565b60006001600160a01b03808916835280881660208401525085604083015261ffff8516606083015260a06080830152615e5860a083018486615983565b98975050505050505050565b60006001600160a01b03808a16835288602084015260a06040840152615e8e60a08401888a615983565b81871660608501528381036080850152615ea9818688615983565b9b9a5050505050505050505050565b60a08101615ec68286615949565b6001600160a01b0393909316606082015260800152919050565b67ffffffffffffffff81811683821601908082111561508857615088615c19565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615f3657600080fd5b83018035915067ffffffffffffffff821115615f5157600080fd5b60200191503681900382131561172b57600080fd5b6060815267ffffffffffffffff855116606082015263ffffffff60208601511660808201526001600160a01b0360408601511660a082015260006060860151615fb760c084018263ffffffff169052565b50608086015160e083015260a086015161010083015260c086015160e0610120840152615fe8610140840182615177565b90508281036020840152615ffd818688615983565b915050612fef604083018415159052565b60006040828403121561602057600080fd5b6040516040810181811067ffffffffffffffff8211171561604357616043615ab0565b604052825181526020928301519281019290925250919050565b60006040828403121561606f57600080fd5b612890838361600e565b6000806060838503121561608c57600080fd5b616096848461600e565b9150604083015167ffffffffffffffff8111156160b257600080fd5b6160be85828601615adf565b9150509250929050565b6060815260006160db6060830187615177565b82810360208401526160ee818688615983565b9150506001600160a01b038316604083015295945050505050565b60006020828403121561611b57600080fd5b5051919050565b60608101611a808284615949565b60008251616142818460208701615153565b919091019291505056fea264697066735822122011a3b1b6a1b0aa2ceb4e3e5a60ecf8840dd2f2a685cfce1ac284d55705463e6c64736f6c63430008160033608060405234801561001057600080fd5b5061026f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461007e5780631881d94d146100a657806354fd4d50146100b55780636750cd4c146100dc575b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61009161008c366004610189565b6100f0565b60405190151581526020015b60405180910390f35b600260405161009d91906101d2565b6040805167ffffffffffffffff815260ff602082015260029181019190915260600161009d565b6100916100ea366004610213565b50600190565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061018357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561019b57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101cb57600080fd5b9392505050565b602081016003831061020d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561022557600080fd5b813563ffffffff811681146101cb57600080fdfea2646970667358221220c9c0506538080982fd403c3c32d7540c9fed117f863df9d5342f129ba868c53b64736f6c63430008160033";
47310
47329
  static readonly abi: readonly [{
47311
47330
  readonly inputs: readonly [{
47312
47331
  readonly internalType: "uint32";
@@ -47545,11 +47564,6 @@ declare class EndpointV2Alt__factory extends ContractFactory {
47545
47564
  readonly internalType: "uint32";
47546
47565
  readonly name: "eid";
47547
47566
  readonly type: "uint32";
47548
- }, {
47549
- readonly indexed: false;
47550
- readonly internalType: "address";
47551
- readonly name: "oldLib";
47552
- readonly type: "address";
47553
47567
  }, {
47554
47568
  readonly indexed: false;
47555
47569
  readonly internalType: "address";
@@ -47593,6 +47607,21 @@ declare class EndpointV2Alt__factory extends ContractFactory {
47593
47607
  }];
47594
47608
  readonly name: "DefaultSendLibrarySet";
47595
47609
  readonly type: "event";
47610
+ }, {
47611
+ readonly anonymous: false;
47612
+ readonly inputs: readonly [{
47613
+ readonly indexed: false;
47614
+ readonly internalType: "address";
47615
+ readonly name: "sender";
47616
+ readonly type: "address";
47617
+ }, {
47618
+ readonly indexed: false;
47619
+ readonly internalType: "address";
47620
+ readonly name: "delegate";
47621
+ readonly type: "address";
47622
+ }];
47623
+ readonly name: "DelegateSet";
47624
+ readonly type: "event";
47596
47625
  }, {
47597
47626
  readonly anonymous: false;
47598
47627
  readonly inputs: readonly [{
@@ -47924,11 +47953,6 @@ declare class EndpointV2Alt__factory extends ContractFactory {
47924
47953
  readonly internalType: "uint32";
47925
47954
  readonly name: "eid";
47926
47955
  readonly type: "uint32";
47927
- }, {
47928
- readonly indexed: false;
47929
- readonly internalType: "address";
47930
- readonly name: "oldLib";
47931
- readonly type: "address";
47932
47956
  }, {
47933
47957
  readonly indexed: false;
47934
47958
  readonly internalType: "address";
@@ -49168,7 +49192,7 @@ declare class Executor__factory extends ContractFactory {
49168
49192
  }): TransactionRequest;
49169
49193
  attach(address: string): Executor;
49170
49194
  connect(signer: Signer): Executor__factory;
49171
- static readonly bytecode = "0x608060405234801561001057600080fd5b5061406e806100206000396000f3fe6080604052600436106102175760003560e01c8063717e8a421161011d578063acdbcca5116100b0578063c7b2370b1161007f578063d2ae210411610064578063d2ae210414610787578063d547741f146107d9578063fa34c84e146107f957600080fd5b8063c7b2370b14610747578063cd88b9031461076757600080fd5b8063acdbcca5146106ac578063c2803b2c146106cc578063c358de0a146106fa578063c416aa511461071a57600080fd5b80638624ba07116100ec5780638624ba071461057557806391d14854146105885780639e944965146105db578063a217fddf1461069757600080fd5b8063717e8a42146104bd578063724e78da146104dd57806372607537146104fd578063741bef1a1461054857600080fd5b80632de11376116101b05780633927c0751161017f5780635c975abb116101645780635c975abb146104325780635e280f111461044a578063709eb6641461049d57600080fd5b80633927c0751461040c578063475b6d9e1461041f57600080fd5b80632de113761461038c5780632f2ff15d146103ac5780633146646a146103cc57806336568abe146103ec57600080fd5b80631095b6d7116101ec5780631095b6d7146102e157806316c38b3c14610301578063248a9ca31461032157806326e67a371461035f57600080fd5b80629fc6811461021c578062bf2e801461023e57806301e336671461029157806301ffc9a7146102b1575b600080fd5b34801561022857600080fd5b5061023c6102373660046131fb565b610819565b005b34801561024a57600080fd5b5060c954610279907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561029d57600080fd5b5061023c6102ac3660046132a0565b610bb8565b3480156102bd57600080fd5b506102d16102cc3660046132dc565b610bf3565b6040519015158152602001610288565b3480156102ed57600080fd5b5061023c6102fc3660046132a0565b610c8c565b34801561030d57600080fd5b5061023c61031c36600461332c565b610e1b565b34801561032d57600080fd5b5061035161033c366004613349565b60009081526065602052604090206001015490565b604051908152602001610288565b34801561036b57600080fd5b5061037f61037a366004613374565b610e40565b6040516102889190613391565b34801561039857600080fd5b506102d16103a73660046133d8565b610ec7565b3480156103b857600080fd5b5061023c6103c73660046133f3565b610fab565b3480156103d857600080fd5b5061023c6103e7366004613468565b610fd5565b3480156103f857600080fd5b5061023c6104073660046133f3565b61109e565b61023c61041a366004613511565b6110d0565b61023c61042d3660046135a5565b6111ba565b34801561043e57600080fd5b5060975460ff166102d1565b34801561045657600080fd5b5061012e546104789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610288565b3480156104a957600080fd5b506103516104b8366004613626565b61120e565b3480156104c957600080fd5b506103516104d8366004613626565b611367565b3480156104e957600080fd5b5061023c6104f83660046133d8565b6114e5565b34801561050957600080fd5b5061012e546105339074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610288565b34801561055457600080fd5b5060ca546104789073ffffffffffffffffffffffffffffffffffffffff1681565b61023c610583366004613697565b61158a565b34801561059457600080fd5b506102d16105a33660046133f3565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105e757600080fd5b506106516105f6366004613374565b61012d602052600090815260409020805460019091015467ffffffffffffffff82169161ffff68010000000000000000820416916fffffffffffffffffffffffffffffffff6a01000000000000000000009092048216911684565b6040805167ffffffffffffffff909516855261ffff90931660208501526fffffffffffffffffffffffffffffffff91821692840192909252166060820152608001610288565b3480156106a357600080fd5b50610351600081565b3480156106b857600080fd5b5061023c6106c736600461375a565b6116c7565b3480156106d857600080fd5b5061012f546104789073ffffffffffffffffffffffffffffffffffffffff1681565b34801561070657600080fd5b5061023c610715366004613851565b611877565b34801561072657600080fd5b5060c9546104789073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075357600080fd5b5061023c6107623660046133d8565b611924565b34801561077357600080fd5b5061023c61078236600461386c565b6119c1565b34801561079357600080fd5b5060c9546107c09074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610288565b3480156107e557600080fd5b5061023c6107f43660046133f3565b611a0b565b34801561080557600080fd5b5061023c6108143660046133d8565b611a30565b60006108437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff811661089c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556108be565b3373ffffffffffffffffffffffffffffffffffffffff8216146108be57600080fd5b600054610100900460ff16158080156108de5750600054600160ff909116105b806108f85750303b1580156108f8575060005460ff166001145b610989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109ef611b1e565b6109fe8686612ee08787611bbf565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aba91906138f4565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790558015610bae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610be281611c7b565b610bed848484611c88565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610c8657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610cb681611c7b565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16610d34576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000610e2681611c7b565b8115610e3857610e34611cb8565b5050565b610e34611d3d565b63ffffffff8116600090815260cb6020908152604091829020805483518184028101840190945280845260609392830182828015610ebb57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e8c5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff1615610f1c57506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff161580610f91575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b15610f9e57506001919050565b506000919050565b919050565b600082815260656020526040902060010154610fc681611c7b565b610fd08383611d94565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610fff81611c7b565b611007611e5b565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906110629087908790879060040161395a565b600060405180830381600087803b15801561107c57600080fd5b505af1158015611090573d6000803e3d6000fd5b50505050610bed600160fb55565b6040517fcebd140e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756110fa81611c7b565b611102611e5b565b611122886111108686611ed5565b61111a8787611ef8565b8a8a8a611f11565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061117e9087908790879060040161395a565b600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50505050610bae600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756111e481611c7b565b6111ec611e5b565b6111fa878787878787611f11565b50611205600160fb55565b50505050505050565b60008461121a81610ec7565b611250576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611258612086565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a1660208084018290528a831684860152606084018a905260c95461ffff7c01000000000000000000000000000000000000000000000000000000008204166080860152600092835261012d9091529084902093517f371c3a8e000000000000000000000000000000000000000000000000000000008152929391169163371c3a8e9161131a918591908a908a9060040161397e565b602060405180830381865afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190613a34565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61139381611c7b565b8561139d81610ec7565b6113d3576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b1660208084018290528b831684860152606084018b905260c95461ffff7c01000000000000000000000000000000000000000000000000000000008204166080860152600092835261012d9091529084902093517ff43bcfc5000000000000000000000000000000000000000000000000000000008152929391169163f43bcfc591611495918591908b908b9060040161397e565b6020604051808303816000875af11580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190613a34565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561150f81611c7b565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115b481611c7b565b6115bc611e5b565b61012e546000906115fc90602085019074010000000000000000000000000000000000000000900463ffffffff166115f482876133d8565b898989611f11565b9050600061160a8234613a7c565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08601358360208801611640818a6133d8565b60808a013561165260a08c018c613a8f565b61165f60c08e018e613a8f565b6040518a63ffffffff1660e01b81526004016116819796959493929190613b30565b6000604051808303818589803b15801561169a57600080fd5b5088f11580156116ae573d6000803e3d6000fd5b50505050505050506116c0600160fb55565b5050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116f181611c7b565b60005b825181101561184757600083828151811061171157611711613b94565b60209081029190910181015160408051608080820183528385015167ffffffffffffffff90811683528385015161ffff9081168488019081526060808801516fffffffffffffffffffffffffffffffff908116878901908152958901518116918701918252975163ffffffff16600090815261012d90995295909720935184549751935187166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9490921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090981692169190911795909517169390931783555160019283018054919092167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790559190910190506116f4565b507f3fd3f9275410b39824c12e5dfcf63fb332698a5eee3b09895aaaaa9e403bd4818260405161157e9190613bc3565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756118a181611c7b565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d9060200161157e565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561194e81611c7b565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e09060200161157e565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119eb81611c7b565b63ffffffff8416600090815260cb602052604090206116c0908484612fd8565b600082815260656020526040902060010154611a2681611c7b565b610fd083836120f3565b6000611a5a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116611ab35773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ad5565b3373ffffffffffffffffffffffffffffffffffffffff821614611ad557600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff16611bb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b611bbd6121b9565b565b600054610100900460ff16611c56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b611c5e612250565b611c66612250565b611c6e6122e7565b6116c085858585856123a8565b611c85813361258d565b50565b73ffffffffffffffffffffffffffffffffffffffff8316611cad57610fd08282612647565b610fd083838361274d565b611cc0612086565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d133390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611d456127bb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611d13565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015611df35750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15611e515760c98054601490611e2a9074010000000000000000000000000000000000000000900467ffffffffffffffff16613c5d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610e348282612827565b600260fb5403611ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610980565b600260fb55565b600160fb55565b6000611ee56031602d8486613c84565b611eee91613cae565b60e01c9392505050565b6000611f0a611f07848461291b565b90565b9392505050565b6000808367ffffffffffffffff811115611f2d57611f2d6130ba565b604051908082528060200260200182016040528015611f56578160200160208202803683370190505b50905060005b84811015612039576000868683818110611f7857611f78613b94565b905060400201803603810190611f8e9190613cf6565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114611ff5576040519150601f19603f3d011682016040523d82523d6000602084013e611ffa565b606091505b505090508084848151811061201157612011613b94565b91151560209283029190910182015282015161202d9086613d4d565b94505050600101611f5c565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c346888888888888660405161207396959493929190613d9e565b60405180910390a1509695505050505050565b60975460ff1615611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610980565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156121515750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156121af5760c980546014906121889074010000000000000000000000000000000000000000900467ffffffffffffffff16613e3f565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610e348282612934565b600054610100900460ff16611ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b600054610100900460ff16611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b600054610100900460ff1661237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff1661243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff868116919091179091558216156124e3576124e3600083611d94565b60005b855181101561253a576125327f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061252557612525613b94565b6020026020010151611d94565b6001016124e6565b5060005b81518110156125855761257d7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061252557612525613b94565b60010161253e565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e34576125cd816129ef565b6125d8836020612a0e565b6040516020016125e9929190613ea5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261098091600401613f26565b73ffffffffffffffffffffffffffffffffffffffff8216612694576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146126ee576040519150601f19603f3d011682016040523d82523d6000602084013e6126f3565b606091505b5050905080610fd0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610980565b73ffffffffffffffffffffffffffffffffffffffff821661279a576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd073ffffffffffffffffffffffffffffffffffffffff84168383612c51565b60975460ff16611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610980565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556128bd3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061292b605160318486613c84565b611f0a91613f77565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610e3457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610c8673ffffffffffffffffffffffffffffffffffffffff831660145b60606000612a1d836002613fb3565b612a28906002613d4d565b67ffffffffffffffff811115612a4057612a406130ba565b6040519080825280601f01601f191660200182016040528015612a6a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612aa157612aa1613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612b0457612b04613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612b40846002613fb3565b612b4b906001613d4d565b90505b6001811115612be8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b8c57612b8c613b94565b1a60f81b828281518110612ba257612ba2613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612be181613fca565b9050612b4e565b508315611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610980565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610fd092869291600091612d1c918516908490612dc9565b9050805160001480612d3d575080806020019051810190612d3d9190613fff565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610980565b6060612dd88484600085612de0565b949350505050565b606082471015612e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610980565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612e9b919061401c565b60006040518083038185875af1925050503d8060008114612ed8576040519150601f19603f3d011682016040523d82523d6000602084013e612edd565b606091505b5091509150612eee87838387612ef9565b979650505050505050565b60608315612f8f578251600003612f885773ffffffffffffffffffffffffffffffffffffffff85163b612f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610980565b5081612dd8565b612dd88383815115612fa45781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109809190613f26565b82805482825590600052602060002090601f016020900481019282156130715791602002820160005b8382111561304257833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613001565b801561306f5782816101000a81549060ff0219169055600101602081600001049283019260010302613042565b505b5061307d929150613081565b5090565b5b8082111561307d5760008155600101613082565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fa657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561310c5761310c6130ba565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613159576131596130ba565b604052919050565b600067ffffffffffffffff82111561317b5761317b6130ba565b5060051b60200190565b600082601f83011261319657600080fd5b813560206131ab6131a683613161565b613112565b8083825260208201915060208460051b8701019350868411156131cd57600080fd5b602086015b848110156131f0576131e381613096565b83529183019183016131d2565b509695505050505050565b60008060008060008060c0878903121561321457600080fd5b61321d87613096565b955061322b60208801613096565b9450604087013567ffffffffffffffff8082111561324857600080fd5b6132548a838b01613185565b955061326260608a01613096565b945061327060808a01613096565b935060a089013591508082111561328657600080fd5b5061329389828a01613185565b9150509295509295509295565b6000806000606084860312156132b557600080fd5b6132be84613096565b92506132cc60208501613096565b9150604084013590509250925092565b6000602082840312156132ee57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f0a57600080fd5b8015158114611c8557600080fd5b60006020828403121561333e57600080fd5b8135611f0a8161331e565b60006020828403121561335b57600080fd5b5035919050565b63ffffffff81168114611c8557600080fd5b60006020828403121561338657600080fd5b8135611f0a81613362565b6020808252825182820181905260009190848201906040850190845b818110156133cc57835160ff16835292840192918401916001016133ad565b50909695505050505050565b6000602082840312156133ea57600080fd5b611f0a82613096565b6000806040838503121561340657600080fd5b8235915061341660208401613096565b90509250929050565b60008083601f84011261343157600080fd5b50813567ffffffffffffffff81111561344957600080fd5b60208301915083602082850101111561346157600080fd5b9250929050565b60008060006040848603121561347d57600080fd5b833567ffffffffffffffff81111561349457600080fd5b6134a08682870161341f565b909790965060209590950135949350505050565b6000606082840312156134c657600080fd5b50919050565b60008083601f8401126134de57600080fd5b50813567ffffffffffffffff8111156134f657600080fd5b6020830191508360208260061b850101111561346157600080fd5b600080600080600080600060e0888a03121561352c57600080fd5b61353689896134b4565b9650606088013567ffffffffffffffff8082111561355357600080fd5b61355f8b838c016134cc565b909850965060808a0135955060a08a013591508082111561357f57600080fd5b5061358c8a828b0161341f565b989b979a5095989497959660c090950135949350505050565b60008060008060008060e087890312156135be57600080fd5b6135c888886134b4565b955060608701356135d881613362565b94506135e660808801613096565b935060a087013567ffffffffffffffff81111561360257600080fd5b61360e89828a016134cc565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561363e57600080fd5b853561364981613362565b945061365760208701613096565b935060408601359250606086013567ffffffffffffffff81111561367a57600080fd5b6136868882890161341f565b969995985093965092949392505050565b600080600080606085870312156136ad57600080fd5b843567ffffffffffffffff808211156136c557600080fd5b6136d1888389016134cc565b90965094506020870135935060408701359150808211156136f157600080fd5b508501610100818803121561370557600080fd5b939692955090935050565b803567ffffffffffffffff81168114610fa657600080fd5b803561ffff81168114610fa657600080fd5b80356fffffffffffffffffffffffffffffffff81168114610fa657600080fd5b6000602080838503121561376d57600080fd5b823567ffffffffffffffff81111561378457600080fd5b8301601f8101851361379557600080fd5b80356137a36131a682613161565b81815260a091820283018401918482019190888411156137c257600080fd5b938501935b838510156138455780858a0312156137df5760008081fd5b6137e76130e9565b85356137f281613362565b81526137ff868801613710565b878201526040613810818801613728565b90820152606061382187820161373a565b90820152608061383287820161373a565b90820152835293840193918501916137c7565b50979650505050505050565b60006020828403121561386357600080fd5b611f0a82613728565b60008060006040848603121561388157600080fd5b833561388c81613362565b9250602084013567ffffffffffffffff808211156138a957600080fd5b818601915086601f8301126138bd57600080fd5b8135818111156138cc57600080fd5b8760208260051b85010111156138e157600080fd5b6020830194508093505050509250925092565b60006020828403121561390657600080fd5b8151611f0a81613362565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408152600061396e604083018587613911565b9050826020830152949350505050565b600061014073ffffffffffffffffffffffffffffffffffffffff80885116845263ffffffff60208901511660208501528060408901511660408501525060608701516060840152608087015161ffff80821660808601528754915067ffffffffffffffff821660a0860152808260401c1660c0860152506fffffffffffffffffffffffffffffffff808260501c1660e086015280600189015416610100860152505080610120840152612eee8184018587613911565b600060208284031215613a4657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610c8657610c86613a4d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ac457600080fd5b83018035915067ffffffffffffffff821115613adf57600080fd5b60200191503681900382131561346157600080fd5b8035613aff81613362565b63ffffffff1682526020818101359083015267ffffffffffffffff613b2660408301613710565b1660408301525050565b613b3a8189613af4565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000613b7360e083018688613911565b82810360c0840152613b86818587613911565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b82811015613c50578151805163ffffffff1685528681015167ffffffffffffffff16878601528581015161ffff16868601526060808201516fffffffffffffffffffffffffffffffff90811691870191909152608091820151169085015260a09093019290850190600101613be0565b5091979650505050505050565b600067ffffffffffffffff808316818103613c7a57613c7a613a4d565b6001019392505050565b60008085851115613c9457600080fd5b83861115613ca157600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015613cee5780818660040360031b1b83161692505b505092915050565b600060408284031215613d0857600080fd5b6040516040810181811067ffffffffffffffff82111715613d2b57613d2b6130ba565b604052613d3783613096565b8152602083013560208201528091505092915050565b80820180821115610c8657610c86613a4d565b60008151808452602080850194506020840160005b83811015613d93578151151587529582019590820190600101613d75565b509495945050505050565b600060e08201613dae838a613af4565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b87811015613e1d5782613dfe85613096565b1682526020848101359083015260409384019390910190600101613dec565b5084810360c0860152613e308187613d60565b9b9a5050505050505050505050565b600067ffffffffffffffff821680613e5957613e59613a4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60005b83811015613e9c578181015183820152602001613e84565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613edd816017850160208801613e81565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613f1a816028840160208801613e81565b01602801949350505050565b6020815260008251806020840152613f45816040850160208701613e81565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356020831015610c86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8082028115828204841417610c8657610c86613a4d565b600081613fd957613fd9613a4d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60006020828403121561401157600080fd5b8151611f0a8161331e565b6000825161402e818460208701613e81565b919091019291505056fea264697066735822122057dd03fe13bd0520e0bedd6d1e714719a2f2d6ef482f98da97556a5008bba45564736f6c63430008160033";
49195
+ static readonly bytecode = "0x608060405234801561001057600080fd5b5061406e806100206000396000f3fe6080604052600436106102175760003560e01c8063717e8a421161011d578063acdbcca5116100b0578063c7b2370b1161007f578063d2ae210411610064578063d2ae210414610787578063d547741f146107d9578063fa34c84e146107f957600080fd5b8063c7b2370b14610747578063cd88b9031461076757600080fd5b8063acdbcca5146106ac578063c2803b2c146106cc578063c358de0a146106fa578063c416aa511461071a57600080fd5b80638624ba07116100ec5780638624ba071461057557806391d14854146105885780639e944965146105db578063a217fddf1461069757600080fd5b8063717e8a42146104bd578063724e78da146104dd57806372607537146104fd578063741bef1a1461054857600080fd5b80632de11376116101b05780633927c0751161017f5780635c975abb116101645780635c975abb146104325780635e280f111461044a578063709eb6641461049d57600080fd5b80633927c0751461040c578063475b6d9e1461041f57600080fd5b80632de113761461038c5780632f2ff15d146103ac5780633146646a146103cc57806336568abe146103ec57600080fd5b80631095b6d7116101ec5780631095b6d7146102e157806316c38b3c14610301578063248a9ca31461032157806326e67a371461035f57600080fd5b80629fc6811461021c578062bf2e801461023e57806301e336671461029157806301ffc9a7146102b1575b600080fd5b34801561022857600080fd5b5061023c6102373660046131fb565b610819565b005b34801561024a57600080fd5b5060c954610279907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561029d57600080fd5b5061023c6102ac3660046132a0565b610bb8565b3480156102bd57600080fd5b506102d16102cc3660046132dc565b610bf3565b6040519015158152602001610288565b3480156102ed57600080fd5b5061023c6102fc3660046132a0565b610c8c565b34801561030d57600080fd5b5061023c61031c36600461332c565b610e1b565b34801561032d57600080fd5b5061035161033c366004613349565b60009081526065602052604090206001015490565b604051908152602001610288565b34801561036b57600080fd5b5061037f61037a366004613374565b610e40565b6040516102889190613391565b34801561039857600080fd5b506102d16103a73660046133d8565b610ec7565b3480156103b857600080fd5b5061023c6103c73660046133f3565b610fab565b3480156103d857600080fd5b5061023c6103e7366004613468565b610fd5565b3480156103f857600080fd5b5061023c6104073660046133f3565b61109e565b61023c61041a366004613511565b6110d0565b61023c61042d3660046135a5565b6111ba565b34801561043e57600080fd5b5060975460ff166102d1565b34801561045657600080fd5b5061012e546104789073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610288565b3480156104a957600080fd5b506103516104b8366004613626565b61120e565b3480156104c957600080fd5b506103516104d8366004613626565b611367565b3480156104e957600080fd5b5061023c6104f83660046133d8565b6114e5565b34801561050957600080fd5b5061012e546105339074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610288565b34801561055457600080fd5b5060ca546104789073ffffffffffffffffffffffffffffffffffffffff1681565b61023c610583366004613697565b61158a565b34801561059457600080fd5b506102d16105a33660046133f3565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105e757600080fd5b506106516105f6366004613374565b61012d602052600090815260409020805460019091015467ffffffffffffffff82169161ffff68010000000000000000820416916fffffffffffffffffffffffffffffffff6a01000000000000000000009092048216911684565b6040805167ffffffffffffffff909516855261ffff90931660208501526fffffffffffffffffffffffffffffffff91821692840192909252166060820152608001610288565b3480156106a357600080fd5b50610351600081565b3480156106b857600080fd5b5061023c6106c736600461375a565b6116c7565b3480156106d857600080fd5b5061012f546104789073ffffffffffffffffffffffffffffffffffffffff1681565b34801561070657600080fd5b5061023c610715366004613851565b611877565b34801561072657600080fd5b5060c9546104789073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075357600080fd5b5061023c6107623660046133d8565b611924565b34801561077357600080fd5b5061023c61078236600461386c565b6119c1565b34801561079357600080fd5b5060c9546107c09074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610288565b3480156107e557600080fd5b5061023c6107f43660046133f3565b611a0b565b34801561080557600080fd5b5061023c6108143660046133d8565b611a30565b60006108437fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff811661089c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556108be565b3373ffffffffffffffffffffffffffffffffffffffff8216146108be57600080fd5b600054610100900460ff16158080156108de5750600054600160ff909116105b806108f85750303b1580156108f8575060005460ff166001145b610989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109ef611b1e565b6109fe8686612ee08787611bbf565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aba91906138f4565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790558015610bae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610be281611c7b565b610bed848484611c88565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610c8657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610cb681611c7b565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16610d34576040517f42cbfad100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000610e2681611c7b565b8115610e3857610e34611cb8565b5050565b610e34611d3d565b63ffffffff8116600090815260cb6020908152604091829020805483518184028101840190945280845260609392830182828015610ebb57602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610e8c5790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff1615610f1c57506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff161580610f91575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b15610f9e57506001919050565b506000919050565b919050565b600082815260656020526040902060010154610fc681611c7b565b610fd08383611d94565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610fff81611c7b565b611007611e5b565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906110629087908790879060040161395a565b600060405180830381600087803b15801561107c57600080fd5b505af1158015611090573d6000803e3d6000fd5b50505050610bed600160fb55565b6040517fcebd140e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756110fa81611c7b565b611102611e5b565b611122886111108686611ed5565b61111a8787611ef8565b8a8a8a611f11565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f89061117e9087908790879060040161395a565b600060405180830381600087803b15801561119857600080fd5b505af11580156111ac573d6000803e3d6000fd5b50505050610bae600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756111e481611c7b565b6111ec611e5b565b6111fa878787878787611f11565b50611205600160fb55565b50505050505050565b60008461121a81610ec7565b611250576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611258612086565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a1660208084018290528a831684860152606084018a905260c95461ffff7c01000000000000000000000000000000000000000000000000000000008204166080860152600092835261012d9091529084902093517f371c3a8e000000000000000000000000000000000000000000000000000000008152929391169163371c3a8e9161131a918591908a908a9060040161397e565b602060405180830381865afa158015611337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135b9190613a34565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61139381611c7b565b8561139d81610ec7565b6113d3576040517f3d693ada00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b1660208084018290528b831684860152606084018b905260c95461ffff7c01000000000000000000000000000000000000000000000000000000008204166080860152600092835261012d9091529084902093517ff43bcfc5000000000000000000000000000000000000000000000000000000008152929391169163f43bcfc591611495918591908b908b9060040161397e565b6020604051808303816000875af11580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190613a34565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561150f81611c7b565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756115b481611c7b565b6115bc611e5b565b61012e546000906115fc90602085019074010000000000000000000000000000000000000000900463ffffffff166115f482876133d8565b898989611f11565b9050600061160a8234613a7c565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08601358360208801611640818a6133d8565b60808a013561165260a08c018c613a8f565b61165f60c08e018e613a8f565b6040518a63ffffffff1660e01b81526004016116819796959493929190613b30565b6000604051808303818589803b15801561169a57600080fd5b5088f11580156116ae573d6000803e3d6000fd5b50505050505050506116c0600160fb55565b5050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756116f181611c7b565b60005b825181101561184757600083828151811061171157611711613b94565b60209081029190910181015160408051608080820183528385015167ffffffffffffffff90811683528385015161ffff9081168488019081526060808801516fffffffffffffffffffffffffffffffff908116878901908152958901518116918701918252975163ffffffff16600090815261012d90995295909720935184549751935187166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9490921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090981692169190911795909517169390931783555160019283018054919092167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790559190910190506116f4565b507f3fd3f9275410b39824c12e5dfcf63fb332698a5eee3b09895aaaaa9e403bd4818260405161157e9190613bc3565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756118a181611c7b565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d9060200161157e565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561194e81611c7b565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e09060200161157e565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756119eb81611c7b565b63ffffffff8416600090815260cb602052604090206116c0908484612fd8565b600082815260656020526040902060010154611a2681611c7b565b610fd083836120f3565b6000611a5a7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116611ab35773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355611ad5565b3373ffffffffffffffffffffffffffffffffffffffff821614611ad557600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff16611bb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b611bbd6121b9565b565b600054610100900460ff16611c56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b611c5e612250565b611c66612250565b611c6e6122e7565b6116c085858585856123a8565b611c85813361258d565b50565b73ffffffffffffffffffffffffffffffffffffffff8316611cad57610fd08282612647565b610fd083838361274d565b611cc0612086565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d133390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611d456127bb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611d13565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015611df35750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b15611e515760c98054601490611e2a9074010000000000000000000000000000000000000000900467ffffffffffffffff16613c5d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610e348282612827565b600260fb5403611ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610980565b600260fb55565b600160fb55565b6000611ee56031602d8486613c84565b611eee91613cae565b60e01c9392505050565b6000611f0a611f07848461291b565b90565b9392505050565b6000808367ffffffffffffffff811115611f2d57611f2d6130ba565b604051908082528060200260200182016040528015611f56578160200160208202803683370190505b50905060005b84811015612039576000868683818110611f7857611f78613b94565b905060400201803603810190611f8e9190613cf6565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114611ff5576040519150601f19603f3d011682016040523d82523d6000602084013e611ffa565b606091505b505090508084848151811061201157612011613b94565b91151560209283029190910182015282015161202d9086613d4d565b94505050600101611f5c565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c346888888888888660405161207396959493929190613d9e565b60405180910390a1509695505050505050565b60975460ff1615611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610980565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156121515750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b156121af5760c980546014906121889074010000000000000000000000000000000000000000900467ffffffffffffffff16613e3f565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b610e348282612934565b600054610100900460ff16611ece576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b600054610100900460ff16611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b600054610100900460ff1661237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff1661243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610980565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff868116919091179091558216156124e3576124e3600083611d94565b60005b855181101561253a576125327f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061252557612525613b94565b6020026020010151611d94565b6001016124e6565b5060005b81518110156125855761257d7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061252557612525613b94565b60010161253e565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e34576125cd816129ef565b6125d8836020612a0e565b6040516020016125e9929190613ea5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261098091600401613f26565b73ffffffffffffffffffffffffffffffffffffffff8216612694576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146126ee576040519150601f19603f3d011682016040523d82523d6000602084013e6126f3565b606091505b5050905080610fd0576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610980565b73ffffffffffffffffffffffffffffffffffffffff821661279a576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd073ffffffffffffffffffffffffffffffffffffffff84168383612c51565b60975460ff16611bbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610980565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610e3457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556128bd3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061292b605160318486613c84565b611f0a91613f77565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610e3457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610c8673ffffffffffffffffffffffffffffffffffffffff831660145b60606000612a1d836002613fb3565b612a28906002613d4d565b67ffffffffffffffff811115612a4057612a406130ba565b6040519080825280601f01601f191660200182016040528015612a6a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612aa157612aa1613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612b0457612b04613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612b40846002613fb3565b612b4b906001613d4d565b90505b6001811115612be8577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b8c57612b8c613b94565b1a60f81b828281518110612ba257612ba2613b94565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612be181613fca565b9050612b4e565b508315611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610980565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656490840152610fd092869291600091612d1c918516908490612dc9565b9050805160001480612d3d575080806020019051810190612d3d9190613fff565b610fd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610980565b6060612dd88484600085612de0565b949350505050565b606082471015612e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610980565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612e9b919061401c565b60006040518083038185875af1925050503d8060008114612ed8576040519150601f19603f3d011682016040523d82523d6000602084013e612edd565b606091505b5091509150612eee87838387612ef9565b979650505050505050565b60608315612f8f578251600003612f885773ffffffffffffffffffffffffffffffffffffffff85163b612f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610980565b5081612dd8565b612dd88383815115612fa45781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109809190613f26565b82805482825590600052602060002090601f016020900481019282156130715791602002820160005b8382111561304257833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613001565b801561306f5782816101000a81549060ff0219169055600101602081600001049283019260010302613042565b505b5061307d929150613081565b5090565b5b8082111561307d5760008155600101613082565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fa657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff8111828210171561310c5761310c6130ba565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613159576131596130ba565b604052919050565b600067ffffffffffffffff82111561317b5761317b6130ba565b5060051b60200190565b600082601f83011261319657600080fd5b813560206131ab6131a683613161565b613112565b8083825260208201915060208460051b8701019350868411156131cd57600080fd5b602086015b848110156131f0576131e381613096565b83529183019183016131d2565b509695505050505050565b60008060008060008060c0878903121561321457600080fd5b61321d87613096565b955061322b60208801613096565b9450604087013567ffffffffffffffff8082111561324857600080fd5b6132548a838b01613185565b955061326260608a01613096565b945061327060808a01613096565b935060a089013591508082111561328657600080fd5b5061329389828a01613185565b9150509295509295509295565b6000806000606084860312156132b557600080fd5b6132be84613096565b92506132cc60208501613096565b9150604084013590509250925092565b6000602082840312156132ee57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611f0a57600080fd5b8015158114611c8557600080fd5b60006020828403121561333e57600080fd5b8135611f0a8161331e565b60006020828403121561335b57600080fd5b5035919050565b63ffffffff81168114611c8557600080fd5b60006020828403121561338657600080fd5b8135611f0a81613362565b6020808252825182820181905260009190848201906040850190845b818110156133cc57835160ff16835292840192918401916001016133ad565b50909695505050505050565b6000602082840312156133ea57600080fd5b611f0a82613096565b6000806040838503121561340657600080fd5b8235915061341660208401613096565b90509250929050565b60008083601f84011261343157600080fd5b50813567ffffffffffffffff81111561344957600080fd5b60208301915083602082850101111561346157600080fd5b9250929050565b60008060006040848603121561347d57600080fd5b833567ffffffffffffffff81111561349457600080fd5b6134a08682870161341f565b909790965060209590950135949350505050565b6000606082840312156134c657600080fd5b50919050565b60008083601f8401126134de57600080fd5b50813567ffffffffffffffff8111156134f657600080fd5b6020830191508360208260061b850101111561346157600080fd5b600080600080600080600060e0888a03121561352c57600080fd5b61353689896134b4565b9650606088013567ffffffffffffffff8082111561355357600080fd5b61355f8b838c016134cc565b909850965060808a0135955060a08a013591508082111561357f57600080fd5b5061358c8a828b0161341f565b989b979a5095989497959660c090950135949350505050565b60008060008060008060e087890312156135be57600080fd5b6135c888886134b4565b955060608701356135d881613362565b94506135e660808801613096565b935060a087013567ffffffffffffffff81111561360257600080fd5b61360e89828a016134cc565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561363e57600080fd5b853561364981613362565b945061365760208701613096565b935060408601359250606086013567ffffffffffffffff81111561367a57600080fd5b6136868882890161341f565b969995985093965092949392505050565b600080600080606085870312156136ad57600080fd5b843567ffffffffffffffff808211156136c557600080fd5b6136d1888389016134cc565b90965094506020870135935060408701359150808211156136f157600080fd5b508501610100818803121561370557600080fd5b939692955090935050565b803567ffffffffffffffff81168114610fa657600080fd5b803561ffff81168114610fa657600080fd5b80356fffffffffffffffffffffffffffffffff81168114610fa657600080fd5b6000602080838503121561376d57600080fd5b823567ffffffffffffffff81111561378457600080fd5b8301601f8101851361379557600080fd5b80356137a36131a682613161565b81815260a091820283018401918482019190888411156137c257600080fd5b938501935b838510156138455780858a0312156137df5760008081fd5b6137e76130e9565b85356137f281613362565b81526137ff868801613710565b878201526040613810818801613728565b90820152606061382187820161373a565b90820152608061383287820161373a565b90820152835293840193918501916137c7565b50979650505050505050565b60006020828403121561386357600080fd5b611f0a82613728565b60008060006040848603121561388157600080fd5b833561388c81613362565b9250602084013567ffffffffffffffff808211156138a957600080fd5b818601915086601f8301126138bd57600080fd5b8135818111156138cc57600080fd5b8760208260051b85010111156138e157600080fd5b6020830194508093505050509250925092565b60006020828403121561390657600080fd5b8151611f0a81613362565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408152600061396e604083018587613911565b9050826020830152949350505050565b600061014073ffffffffffffffffffffffffffffffffffffffff80885116845263ffffffff60208901511660208501528060408901511660408501525060608701516060840152608087015161ffff80821660808601528754915067ffffffffffffffff821660a0860152808260401c1660c0860152506fffffffffffffffffffffffffffffffff808260501c1660e086015280600189015416610100860152505080610120840152612eee8184018587613911565b600060208284031215613a4657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610c8657610c86613a4d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ac457600080fd5b83018035915067ffffffffffffffff821115613adf57600080fd5b60200191503681900382131561346157600080fd5b8035613aff81613362565b63ffffffff1682526020818101359083015267ffffffffffffffff613b2660408301613710565b1660408301525050565b613b3a8189613af4565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000613b7360e083018688613911565b82810360c0840152613b86818587613911565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b82811015613c50578151805163ffffffff1685528681015167ffffffffffffffff16878601528581015161ffff16868601526060808201516fffffffffffffffffffffffffffffffff90811691870191909152608091820151169085015260a09093019290850190600101613be0565b5091979650505050505050565b600067ffffffffffffffff808316818103613c7a57613c7a613a4d565b6001019392505050565b60008085851115613c9457600080fd5b83861115613ca157600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015613cee5780818660040360031b1b83161692505b505092915050565b600060408284031215613d0857600080fd5b6040516040810181811067ffffffffffffffff82111715613d2b57613d2b6130ba565b604052613d3783613096565b8152602083013560208201528091505092915050565b80820180821115610c8657610c86613a4d565b60008151808452602080850194506020840160005b83811015613d93578151151587529582019590820190600101613d75565b509495945050505050565b600060e08201613dae838a613af4565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b87811015613e1d5782613dfe85613096565b1682526020848101359083015260409384019390910190600101613dec565b5084810360c0860152613e308187613d60565b9b9a5050505050505050505050565b600067ffffffffffffffff821680613e5957613e59613a4d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b60005b83811015613e9c578181015183820152602001613e84565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613edd816017850160208801613e81565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613f1a816028840160208801613e81565b01602801949350505050565b6020815260008251806020840152613f45816040850160208701613e81565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80356020831015610c86577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8082028115828204841417610c8657610c86613a4d565b600081613fd957613fd9613a4d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60006020828403121561401157600080fd5b8151611f0a8161331e565b6000825161402e818460208701613e81565b919091019291505056fea26469706673582212200b259a1bc78c1c68d3ec2034dc05a172dee37b1f0da72b8e85b6934202890ee064736f6c63430008160033";
49172
49196
  static readonly abi: readonly [{
49173
49197
  readonly inputs: readonly [];
49174
49198
  readonly name: "NotAllowed";
@@ -50071,7 +50095,7 @@ declare class ExecutorFeeLib__factory extends ContractFactory {
50071
50095
  }): TransactionRequest;
50072
50096
  attach(address: string): ExecutorFeeLib;
50073
50097
  connect(signer: Signer): ExecutorFeeLib__factory;
50074
- static readonly bytecode = "0x60a060405234801561001057600080fd5b5060405161172c38038061172c83398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b6080516116686100c4600039600061096101526116686000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046111a0565b610154565b005b3480156100a357600080fd5b506100b76100b23660046111dc565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561030d565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f36600461129c565b610321565b34801561014057600080fd5b506100b761014f3660046111dc565b6103dd565b61015c6104a6565b610167838383610527565b505050565b600080806101b961019561018660408a0160208b016112be565b61753063ffffffff9091161090565b6101a260208901896112e4565b6101b260808a0160608b0161132c565b8888610557565b909250905060008080806101d060208c018c61129c565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c6101fb60408e0160208f016112be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190611349565b929650909450925090506102d4846102a860408d0160208e0161139e565b8d60800160208101906102bb919061139e565b8d60400160208101906102ce919061132c565b856108d6565b96506102f48684848e60800160208101906102ef919061139e565b6109d1565b6102fe90886113f1565b9b9a5050505050505050505050565b6103156104a6565b61031f6000610a3b565b565b6103296104a6565b73ffffffffffffffffffffffffffffffffffffffff81166103d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103da81610a3b565b50565b600080806103f761019561018660408a0160208b016112be565b9092509050600080808061040e60208c018c61129c565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d61043960408e0160208f016112be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af1158015610266573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461031f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c8565b73ffffffffffffffffffffffffffffffffffffffff831661054c576101678282610ab0565b610167838383610bb6565b600080828103610593576040517f148c679d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff85166000805b848210156108075760003681806105bb8a8a88610c24565b9850919550935091508590507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016106a0576000806105fe8585610c7a565b915091508e801561062157506000816fffffffffffffffffffffffffffffffff16115b1561065d576040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff871660048201526024016103c8565b6106796fffffffffffffffffffffffffffffffff82168b6113f1565b99506106976fffffffffffffffffffffffffffffffff83168a6113f1565b985050506107fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8516016106fd5760006106d68484610cf8565b5090506106f56fffffffffffffffffffffffffffffffff82168a6113f1565b9850506107fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610794578c15610764576040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff851660048201526024016103c8565b6000806107718585610d4f565b9250925050806fffffffffffffffffffffffffffffffff168a61067991906113f1565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8516016107c757600194506107fe565b6040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff851660048201526024016103c8565b505050506105a3565b818514610843576040517fb61964ac000000000000000000000000000000000000000000000000000000008152600481018390526024016103c8565b866fffffffffffffffffffffffffffffffff168411156108aa576040517ff5cd7a35000000000000000000000000000000000000000000000000000000008152600481018590526fffffffffffffffffffffffffffffffff881660248201526044016103c8565b80156108ca5760646108bd84606661140a565b6108c79190611421565b92505b50509550959350505050565b60008061ffff8616156108e957856108eb565b845b9050600061271061090061ffff84168a61140a565b61090a9190611421565b90506fffffffffffffffffffffffffffffffff8416158061093b57506fffffffffffffffffffffffffffffffff8516155b156109495791506109c89050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff1661099d919061140a565b6109a79190611421565b6109b191906113f1565b90508181116109c057816109c2565b805b93505050505b95945050505050565b60008415610a33576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610a12919061140a565b610a1c9190611421565b610a26919061140a565b610a309190611421565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610afd576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610b57576040519150601f19603f3d011682016040523d82523d6000602084013e610b5c565b606091505b5050905080610167576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016103c8565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ddc565b600036816001840181610c38888884610e69565b600292909201919050610c4c888884610e90565b94506001820161ffff82168301610c6581838b8d61145c565b979b909a50969850505061ffff160193505050565b60008060108314801590610c8f575060208314155b15610cc6576040517fd03c996900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cd284846000610eb5565b915060208314610ce3576000610cef565b610cef84846010610eb5565b90509250929050565b60008060308314610d35576040517fde48d29900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4184846000610eb5565b9150610cef84846010610edc565b6000808060128414801590610d65575060228414155b15610d9c576040517f071673fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da885856000610e69565b9250610db685856002610eb5565b915060228414610dc7576000610dd3565b610dd385856012610eb5565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ef7565b600060028201610e7b8184868861145c565b610e8491611486565b60f01c95945050505050565b6000838383818110610ea457610ea46114ce565b919091013560f81c95945050505050565b600060108201610ec78184868861145c565b610ed0916114fd565b60801c95945050505050565b600060208201610eee8184868861145c565b6109c891611543565b6000610f59826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110069092919063ffffffff16565b9050805160001480610f7a575080806020019051810190610f7a919061157f565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103c8565b6060610a338484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161103a91906115c5565b60006040518083038185875af1925050503d8060008114611077576040519150601f19603f3d011682016040523d82523d6000602084013e61107c565b606091505b509150915061108d87838387611098565b979650505050505050565b6060831561112e5782516000036111275773ffffffffffffffffffffffffffffffffffffffff85163b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c8565b5081610a33565b610a3383838151156111435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c891906115e1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461119b57600080fd5b919050565b6000806000606084860312156111b557600080fd5b6111be84611177565b92506111cc60208501611177565b9150604084013590509250925092565b6000806000808486036101408112156111f457600080fd5b60a081121561120257600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561123557600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561125857600080fd5b818701915087601f83011261126c57600080fd5b81358181111561127b57600080fd5b88602082850101111561128d57600080fd5b95989497505060200194505050565b6000602082840312156112ae57600080fd5b6112b782611177565b9392505050565b6000602082840312156112d057600080fd5b813563ffffffff811681146112b757600080fd5b6000602082840312156112f657600080fd5b813567ffffffffffffffff811681146112b757600080fd5b6fffffffffffffffffffffffffffffffff811681146103da57600080fd5b60006020828403121561133e57600080fd5b81356112b78161130e565b6000806000806080858703121561135f57600080fd5b8451935060208501516113718161130e565b60408601519093506113828161130e565b60608601519092506113938161130e565b939692955090935050565b6000602082840312156113b057600080fd5b813561ffff811681146112b757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611404576114046113c2565b92915050565b8082028115828204841417611404576114046113c2565b600082611457577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561146c57600080fd5b8386111561147957600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156114c65780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156114c65760109490940360031b84901b1690921692915050565b80356020831015611404577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561159157600080fd5b815180151581146112b757600080fd5b60005b838110156115bc5781810151838201526020016115a4565b50506000910152565b600082516115d78184602087016115a1565b9190910192915050565b60208152600082518060208401526116008160408501602087016115a1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212204438bdeac262d5483c06032e5f709edda41102d0ccbdd02652a3796986f055ad64736f6c63430008160033";
50098
+ static readonly bytecode = "0x60a060405234801561001057600080fd5b5060405161172c38038061172c83398101604081905261002f91610090565b61003833610040565b6080526100a9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a257600080fd5b5051919050565b6080516116686100c4600039600061096101526116686000f3fe6080604052600436106100695760003560e01c80638da5cb5b116100435780638da5cb5b146100df578063f2fde38b14610114578063f43bcfc51461013457600080fd5b806301e3366714610075578063371c3a8e14610097578063715018a6146100ca57600080fd5b3661007057005b600080fd5b34801561008157600080fd5b506100956100903660046111a0565b610154565b005b3480156100a357600080fd5b506100b76100b23660046111dc565b61016c565b6040519081526020015b60405180910390f35b3480156100d657600080fd5b5061009561030d565b3480156100eb57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100c1565b34801561012057600080fd5b5061009561012f36600461129c565b610321565b34801561014057600080fd5b506100b761014f3660046111dc565b6103dd565b61015c6104a6565b610167838383610527565b505050565b600080806101b961019561018660408a0160208b016112be565b61753063ffffffff9091161090565b6101a260208901896112e4565b6101b260808a0160608b0161132c565b8888610557565b909250905060008080806101d060208c018c61129c565b73ffffffffffffffffffffffffffffffffffffffff166388a4124c6101fb60408e0160208f016112be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e0135602482015260448101889052606401608060405180830381865afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190611349565b929650909450925090506102d4846102a860408d0160208e0161139e565b8d60800160208101906102bb919061139e565b8d60400160208101906102ce919061132c565b856108d6565b96506102f48684848e60800160208101906102ef919061139e565b6109d1565b6102fe90886113f1565b9b9a5050505050505050505050565b6103156104a6565b61031f6000610a3b565b565b6103296104a6565b73ffffffffffffffffffffffffffffffffffffffff81166103d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103da81610a3b565b50565b600080806103f761019561018660408a0160208b016112be565b9092509050600080808061040e60208c018c61129c565b73ffffffffffffffffffffffffffffffffffffffff1663c1723a1d61043960408e0160208f016112be565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815263ffffffff91909116600482015260608e01356024820152604481018890526064016080604051808303816000875af1158015610266573d6000803e3d6000fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331461031f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c8565b73ffffffffffffffffffffffffffffffffffffffff831661054c576101678282610ab0565b610167838383610bb6565b600080828103610593576040517f148c679d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5067ffffffffffffffff85166000805b848210156108075760003681806105bb8a8a88610c24565b9850919550935091508590507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff8516016106a0576000806105fe8585610c7a565b915091508e801561062157506000816fffffffffffffffffffffffffffffffff16115b1561065d576040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff871660048201526024016103c8565b6106796fffffffffffffffffffffffffffffffff82168b6113f1565b99506106976fffffffffffffffffffffffffffffffff83168a6113f1565b985050506107fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8516016106fd5760006106d68484610cf8565b5090506106f56fffffffffffffffffffffffffffffffff82168a6113f1565b9850506107fe565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff851601610794578c15610764576040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff851660048201526024016103c8565b6000806107718585610d4f565b9250925050806fffffffffffffffffffffffffffffffff168a61067991906113f1565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff8516016107c757600194506107fe565b6040517f3d6c5c7000000000000000000000000000000000000000000000000000000000815260ff851660048201526024016103c8565b505050506105a3565b818514610843576040517fb61964ac000000000000000000000000000000000000000000000000000000008152600481018390526024016103c8565b866fffffffffffffffffffffffffffffffff168411156108aa576040517ff5cd7a35000000000000000000000000000000000000000000000000000000008152600481018590526fffffffffffffffffffffffffffffffff881660248201526044016103c8565b80156108ca5760646108bd84606661140a565b6108c79190611421565b92505b50509550959350505050565b60008061ffff8616156108e957856108eb565b845b9050600061271061090061ffff84168a61140a565b61090a9190611421565b90506fffffffffffffffffffffffffffffffff8416158061093b57506fffffffffffffffffffffffffffffffff8516155b156109495791506109c89050565b600088856fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000886fffffffffffffffffffffffffffffffff1661099d919061140a565b6109a79190611421565b6109b191906113f1565b90508181116109c057816109c2565b805b93505050505b95945050505050565b60008415610a33576127108261ffff16846fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff1688610a12919061140a565b610a1c9190611421565b610a26919061140a565b610a309190611421565b90505b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610afd576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610b57576040519150601f19603f3d011682016040523d82523d6000602084013e610b5c565b606091505b5050905080610167576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016103c8565b73ffffffffffffffffffffffffffffffffffffffff8216610c03576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016773ffffffffffffffffffffffffffffffffffffffff84168383610ddc565b600036816001840181610c38888884610e69565b600292909201919050610c4c888884610e90565b94506001820161ffff82168301610c6581838b8d61145c565b979b909a50969850505061ffff160193505050565b60008060108314801590610c8f575060208314155b15610cc6576040517fd03c996900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cd284846000610eb5565b915060208314610ce3576000610cef565b610cef84846010610eb5565b90509250929050565b60008060308314610d35576040517fde48d29900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d4184846000610eb5565b9150610cef84846010610edc565b6000808060128414801590610d65575060228414155b15610d9c576040517f071673fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610da885856000610e69565b9250610db685856002610eb5565b915060228414610dc7576000610dd3565b610dd385856012610eb5565b90509250925092565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610167908490610ef7565b600060028201610e7b8184868861145c565b610e8491611486565b60f01c95945050505050565b6000838383818110610ea457610ea46114ce565b919091013560f81c95945050505050565b600060108201610ec78184868861145c565b610ed0916114fd565b60801c95945050505050565b600060208201610eee8184868861145c565b6109c891611543565b6000610f59826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166110069092919063ffffffff16565b9050805160001480610f7a575080806020019051810190610f7a919061157f565b610167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103c8565b6060610a338484600085856000808673ffffffffffffffffffffffffffffffffffffffff16858760405161103a91906115c5565b60006040518083038185875af1925050503d8060008114611077576040519150601f19603f3d011682016040523d82523d6000602084013e61107c565b606091505b509150915061108d87838387611098565b979650505050505050565b6060831561112e5782516000036111275773ffffffffffffffffffffffffffffffffffffffff85163b611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c8565b5081610a33565b610a3383838151156111435781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c891906115e1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461119b57600080fd5b919050565b6000806000606084860312156111b557600080fd5b6111be84611177565b92506111cc60208501611177565b9150604084013590509250925092565b6000806000808486036101408112156111f457600080fd5b60a081121561120257600080fd5b85945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608201121561123557600080fd5b5060a08501925061012085013567ffffffffffffffff8082111561125857600080fd5b818701915087601f83011261126c57600080fd5b81358181111561127b57600080fd5b88602082850101111561128d57600080fd5b95989497505060200194505050565b6000602082840312156112ae57600080fd5b6112b782611177565b9392505050565b6000602082840312156112d057600080fd5b813563ffffffff811681146112b757600080fd5b6000602082840312156112f657600080fd5b813567ffffffffffffffff811681146112b757600080fd5b6fffffffffffffffffffffffffffffffff811681146103da57600080fd5b60006020828403121561133e57600080fd5b81356112b78161130e565b6000806000806080858703121561135f57600080fd5b8451935060208501516113718161130e565b60408601519093506113828161130e565b60608601519092506113938161130e565b939692955090935050565b6000602082840312156113b057600080fd5b813561ffff811681146112b757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611404576114046113c2565b92915050565b8082028115828204841417611404576114046113c2565b600082611457577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000808585111561146c57600080fd5b8386111561147957600080fd5b5050820193919092039150565b7fffff00000000000000000000000000000000000000000000000000000000000081358181169160028510156114c65780818660020360031b1b83161692505b505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000081358181169160108510156114c65760109490940360031b84901b1690921692915050565b80356020831015611404577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006020828403121561159157600080fd5b815180151581146112b757600080fd5b60005b838110156115bc5781810151838201526020016115a4565b50506000910152565b600082516115d78184602087016115a1565b9190910192915050565b60208152600082518060208401526116008160408501602087016115a1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220c6ebcfc17552e8dbc93c703e5ccae0a9be1620571cddf2651083e96adaa53e8d64736f6c63430008160033";
50075
50099
  static readonly abi: readonly [{
50076
50100
  readonly inputs: readonly [{
50077
50101
  readonly internalType: "uint256";
@@ -50393,11 +50417,6 @@ declare class MessageLibManager__factory {
50393
50417
  readonly internalType: "uint32";
50394
50418
  readonly name: "eid";
50395
50419
  readonly type: "uint32";
50396
- }, {
50397
- readonly indexed: false;
50398
- readonly internalType: "address";
50399
- readonly name: "oldLib";
50400
- readonly type: "address";
50401
50420
  }, {
50402
50421
  readonly indexed: false;
50403
50422
  readonly internalType: "address";
@@ -50478,11 +50497,6 @@ declare class MessageLibManager__factory {
50478
50497
  readonly internalType: "uint32";
50479
50498
  readonly name: "eid";
50480
50499
  readonly type: "uint32";
50481
- }, {
50482
- readonly indexed: false;
50483
- readonly internalType: "address";
50484
- readonly name: "oldLib";
50485
- readonly type: "address";
50486
50500
  }, {
50487
50501
  readonly indexed: false;
50488
50502
  readonly internalType: "address";
@@ -51564,7 +51578,7 @@ declare class PriceFeed__factory extends ContractFactory {
51564
51578
  }): TransactionRequest;
51565
51579
  attach(address: string): PriceFeed;
51566
51580
  connect(signer: Signer): PriceFeed__factory;
51567
- static readonly bytecode = "0x608060405234801561001057600080fd5b50611d78806100206000396000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063d350ad251161007f578063e0ad121a11610059578063e0ad121a14610653578063f2fde38b14610708578063fd9be5221461072857600080fd5b8063d350ad251461051c578063da26663a1461053c578063dbbb41551461063357600080fd5b8063c1840327116100b0578063c184032714610498578063c4d66de8146104bf578063cd68b79b146104df57600080fd5b80638da5cb5b1461041657806392807f5814610441578063c1723a1d1461048557600080fd5b80635e280f11116101385780637dc438a4116101125780637dc438a41461035e57806388a4124c1461037e5780638ca2fb08146103d657600080fd5b80635e280f11146102b1578063715018a6146103035780637bc3c9ab1461031857600080fd5b806336a5beba1161016957806336a5beba1461020957806352a72510146102715780635d6d7ccb1461029157600080fd5b806311f2c343146101905780632f7cb0b4146101c75780633161b7f6146101e9575b600080fd5b34801561019c57600080fd5b506101b46101ab36600461197b565b60009392505050565b6040519081526020015b60405180910390f35b3480156101d357600080fd5b506101e76101e23660046119ce565b610748565b005b3480156101f557600080fd5b506101e76102043660046119f0565b610785565b34801561021557600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101be565b34801561027d57600080fd5b506101e761028c366004611a89565b610955565b34801561029d57600080fd5b506101e76102ac3660046119ce565b6109b3565b3480156102bd57600080fd5b50606a546102de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101be565b34801561030f57600080fd5b506101e7610a7a565b34801561032457600080fd5b50610338610333366004611ad7565b610a8e565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101be565b34801561036a57600080fd5b506101e7610379366004611af5565b610b29565b34801561038a57600080fd5b5061039e61039936600461197b565b610c36565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101be565b3480156103e257600080fd5b506104066103f1366004611b0d565b60666020526000908152604090205460ff1681565b60405190151581526020016101be565b34801561042257600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102de565b34801561044d57600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101be565b61039e61049336600461197b565b610c58565b3480156104a457600080fd5b506065546fffffffffffffffffffffffffffffffff16610464565b3480156104cb57600080fd5b506101e76104da366004611b0d565b610c89565b3480156104eb57600080fd5b506069546104649070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b506101e76105373660046119ce565b610f70565b34801561054857600080fd5b506105ef610557366004611b28565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101be565b34801561063f57600080fd5b506101e761064e366004611b0d565b610fbb565b34801561065f57600080fd5b506105ef61066e366004611b43565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561071457600080fd5b506101e7610723366004611b0d565b61100a565b34801561073457600080fd5b506101e7610743366004611b5e565b6110c1565b6107506110d7565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b336107a560335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610809573360009081526066602052604090205460ff16610809576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610950573683838381811061082757610827611b88565b60800291909101915061094790506108426020830183611b28565b61085436849003840160208501611bcf565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161080c565b505050565b61095d6110d7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336109d360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610a37573360009081526066602052604090205460ff16610a37576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610a826110d7565b610a8c6000611158565b565b6000808461ffff16606e1480610aa957508461ffff1661279f145b80610ab957508461ffff16614eaf145b15610ad657610acd8561ffff1685856111cf565b91509150610b21565b8461ffff16606f1480610aee57508461ffff16612794145b80610afe57508461ffff16614ea4145b15610b1257610acd8561ffff16858561132c565b610acd8561ffff1685856114dd565b935093915050565b33610b4960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610bad573360009081526066602052604090205460ff16610bad576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bbd6108426020830183611b28565b6000610bcf60a0830160808401611c62565b90506000610be360c0840160a08501611b28565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610c478787876115b2565b935093509350935093509350935093565b600080808080610c6c565b60405180910390fd5b610c778888886115b2565b94509450945094505093509350935093565b6000610cb37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610d0c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610d2e565b3373ffffffffffffffffffffffffffffffffffffffff821614610d2e57600080fd5b600054610100900460ff1615808015610d4e5750600054600160ff909116105b80610d685750303b158015610d68575060005460ff166001145b610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c63565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e5a611689565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff91909116179055801561095057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610f786110d7565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610fc36110d7565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110126110d7565b73ffffffffffffffffffffffffffffffffffffffff81166110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c63565b6110be81611158565b50565b6110c96110d7565b6110d38282611728565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c63565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906112349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689611cac565b61123e9190611cf8565b6112489190611cac565b825490915060009061127c907801000000000000000000000000000000000000000000000000900463ffffffff1688611cac565b835460685491925060009167ffffffffffffffff700100000000000000000000000000000000909204821691849186916112b791168b611d0c565b6112c19190611d0c565b6112cb9190611d0c565b6112d59190611cac565b60655485549192506fffffffffffffffffffffffffffffffff908116916112fd911683611cac565b6113079190611cf8565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b600080600061133a8661182e565b63ffffffff8082166000908152606760205260408120805493945092909161137f91780100000000000000000000000000000000000000000000000090041688611cac565b61138b90610c74611d0c565b82549091506000906113bb90700100000000000000000000000000000000900467ffffffffffffffff1683611cac565b63ffffffff808b16600090815260676020526040812080549394509290916114009178010000000000000000000000000000000000000000000000009004168b611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166114308b84611d0c565b61143a9190611cac565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611465911687611cac565b61146f9190611cf8565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161149a911685611cac565b6114a49190611cf8565b905060006114b28284611d0c565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff8084166000908152606760205260408120805491928392839161152291780100000000000000000000000000000000000000000000000090041687611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115528784611d0c565b61155c9190611cac565b60655484549192506fffffffffffffffffffffffffffffffff90811691611584911683611cac565b61158e9190611cf8565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b6000808080806115c461753089611d1f565b90508063ffffffff16606e14806115e257508063ffffffff1661279f145b806115f457508063ffffffff16614eaf145b1561160e576116048188886111cf565b909550935061165d565b8063ffffffff16606f148061162a57508063ffffffff16612794145b8061163c57508063ffffffff16614ea4145b1561164c5761160481888861132c565b6116578188886114dd565b90955093505b505060655460695493979296506fffffffffffffffffffffffffffffffff908116955090921692509050565b600054610100900460ff16611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c6118c2565b73ffffffffffffffffffffffffffffffffffffffff8216611775576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b5050905080610950576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c63565b60008061183d61753084611d1f565b90508063ffffffff16606f036118565750606592915050565b8063ffffffff166127940361186f575061278992915050565b8063ffffffff16614ea4036118885750614e9992915050565b6040517f8d2da58000000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c63565b600054610100900460ff16611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c33611158565b803563ffffffff8116811461197657600080fd5b919050565b60008060006060848603121561199057600080fd5b61199984611962565b95602085013595506040909401359392505050565b80356fffffffffffffffffffffffffffffffff8116811461197657600080fd5b6000602082840312156119e057600080fd5b6119e9826119ae565b9392505050565b60008060208385031215611a0357600080fd5b823567ffffffffffffffff80821115611a1b57600080fd5b818501915085601f830112611a2f57600080fd5b813581811115611a3e57600080fd5b8660208260071b8501011115611a5357600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197657600080fd5b60008060408385031215611a9c57600080fd5b611aa583611a65565b915060208301358015158114611aba57600080fd5b809150509250929050565b803561ffff8116811461197657600080fd5b600080600060608486031215611aec57600080fd5b61199984611ac5565b600060c08284031215611b0757600080fd5b50919050565b600060208284031215611b1f57600080fd5b6119e982611a65565b600060208284031215611b3a57600080fd5b6119e982611962565b600060208284031215611b5557600080fd5b6119e982611ac5565b60008060408385031215611b7157600080fd5b611b7a83611a65565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461197657600080fd5b600060608284031215611be157600080fd5b6040516060810181811067ffffffffffffffff82111715611c2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611c37836119ae565b8152611c4560208401611bb7565b6020820152611c5660408401611962565b60408201529392505050565b600060208284031215611c7457600080fd5b6119e982611bb7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417611cc357611cc3611c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611d0757611d07611cc9565b500490565b80820180821115611cc357611cc3611c7d565b600063ffffffff80841680611d3657611d36611cc9565b9216919091069291505056fea2646970667358221220f89121cc0b1c1ce0e2c22af1716c1d3d013db581484435b61e34798d7e9daf3264736f6c63430008160033";
51581
+ static readonly bytecode = "0x608060405234801561001057600080fd5b50611d78806100206000396000f3fe60806040526004361061018b5760003560e01c80638da5cb5b116100d6578063d350ad251161007f578063e0ad121a11610059578063e0ad121a14610653578063f2fde38b14610708578063fd9be5221461072857600080fd5b8063d350ad251461051c578063da26663a1461053c578063dbbb41551461063357600080fd5b8063c1840327116100b0578063c184032714610498578063c4d66de8146104bf578063cd68b79b146104df57600080fd5b80638da5cb5b1461041657806392807f5814610441578063c1723a1d1461048557600080fd5b80635e280f11116101385780637dc438a4116101125780637dc438a41461035e57806388a4124c1461037e5780638ca2fb08146103d657600080fd5b80635e280f11146102b1578063715018a6146103035780637bc3c9ab1461031857600080fd5b806336a5beba1161016957806336a5beba1461020957806352a72510146102715780635d6d7ccb1461029157600080fd5b806311f2c343146101905780632f7cb0b4146101c75780633161b7f6146101e9575b600080fd5b34801561019c57600080fd5b506101b46101ab36600461197b565b60009392505050565b6040519081526020015b60405180910390f35b3480156101d357600080fd5b506101e76101e23660046119ce565b610748565b005b3480156101f557600080fd5b506101e76102043660046119f0565b610785565b34801561021557600080fd5b5060408051808201825260008082526020918201528151808301835260685467ffffffffffffffff811680835263ffffffff680100000000000000009092048216928401928352845190815291511691810191909152016101be565b34801561027d57600080fd5b506101e761028c366004611a89565b610955565b34801561029d57600080fd5b506101e76102ac3660046119ce565b6109b3565b3480156102bd57600080fd5b50606a546102de9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101be565b34801561030f57600080fd5b506101e7610a7a565b34801561032457600080fd5b50610338610333366004611ad7565b610a8e565b604080519283526fffffffffffffffffffffffffffffffff9091166020830152016101be565b34801561036a57600080fd5b506101e7610379366004611af5565b610b29565b34801561038a57600080fd5b5061039e61039936600461197b565b610c36565b604080519485526fffffffffffffffffffffffffffffffff9384166020860152918316918401919091521660608201526080016101be565b3480156103e257600080fd5b506104066103f1366004611b0d565b60666020526000908152604090205460ff1681565b60405190151581526020016101be565b34801561042257600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166102de565b34801561044d57600080fd5b506069546fffffffffffffffffffffffffffffffff165b6040516fffffffffffffffffffffffffffffffff90911681526020016101be565b61039e61049336600461197b565b610c58565b3480156104a457600080fd5b506065546fffffffffffffffffffffffffffffffff16610464565b3480156104cb57600080fd5b506101e76104da366004611b0d565b610c89565b3480156104eb57600080fd5b506069546104649070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b506101e76105373660046119ce565b610f70565b34801561054857600080fd5b506105ef610557366004611b28565b60408051606080820183526000808352602080840182905292840181905263ffffffff94851681526067835283902083519182018452546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000810467ffffffffffffffff169282019290925278010000000000000000000000000000000000000000000000009091049092169082015290565b6040805182516fffffffffffffffffffffffffffffffff16815260208084015167ffffffffffffffff16908201529181015163ffffffff16908201526060016101be565b34801561063f57600080fd5b506101e761064e366004611b0d565b610fbb565b34801561065f57600080fd5b506105ef61066e366004611b43565b60408051606080820183526000808352602080840182905292840181905261ffff949094168452606782529282902082519384018352546fffffffffffffffffffffffffffffffff8116845267ffffffffffffffff700100000000000000000000000000000000820416918401919091527801000000000000000000000000000000000000000000000000900463ffffffff169082015290565b34801561071457600080fd5b506101e7610723366004611b0d565b61100a565b34801561073457600080fd5b506101e7610743366004611b5e565b6110c1565b6107506110d7565b606980546fffffffffffffffffffffffffffffffff928316700100000000000000000000000000000000029216919091179055565b336107a560335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610809573360009081526066602052604090205460ff16610809576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610950573683838381811061082757610827611b88565b60800291909101915061094790506108426020830183611b28565b61085436849003840160208501611bcf565b805160208083015160409384015184516060810186526fffffffffffffffffffffffffffffffff948516815267ffffffffffffffff92831681850190815263ffffffff9283168288019081529783166000908152606790955295909320925183549551965194167fffffffffffffffff000000000000000000000000000000000000000000000000909516949094177001000000000000000000000000000000009590911694909402939093177fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b5060010161080c565b505050565b61095d6110d7565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b336109d360335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610a37573360009081526066602052604090205460ff16610a37576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606980547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610a826110d7565b610a8c6000611158565b565b6000808461ffff16606e1480610aa957508461ffff1661279f145b80610ab957508461ffff16614eaf145b15610ad657610acd8561ffff1685856111cf565b91509150610b21565b8461ffff16606f1480610aee57508461ffff16612794145b80610afe57508461ffff16614ea4145b15610b1257610acd8561ffff16858561132c565b610acd8561ffff1685856114dd565b935093915050565b33610b4960335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610bad573360009081526066602052604090205460ff16610bad576040517fa5138d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bbd6108426020830183611b28565b6000610bcf60a0830160808401611c62565b90506000610be360c0840160a08501611b28565b6068805463ffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000000000000000000090921667ffffffffffffffff90941693909317179091555050565b600080600080610c478787876115b2565b935093509350935093509350935093565b600080808080610c6c565b60405180910390fd5b610c778888886115b2565b94509450945094505093509350935093565b6000610cb37fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610d0c5773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610d2e565b3373ffffffffffffffffffffffffffffffffffffffff821614610d2e57600080fd5b600054610100900460ff1615808015610d4e5750600054600160ff909116105b80610d685750303b158015610d68575060005460ff166001145b610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610c63565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610e5a611689565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260666020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055606580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668056bc75e2d6310000017905560698054702f000000000000000000000000000000006fffffffffffffffffffffffffffffffff91909116179055801561095057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b610f786110d7565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b610fc36110d7565b606a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6110126110d7565b73ffffffffffffffffffffffffffffffffffffffff81166110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c63565b6110be81611158565b50565b6110c96110d7565b6110d38282611728565b5050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c63565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b63ffffffff8381166000908152606760205260408120606854606954929384938492680100000000000000009004909116906064906112349070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1689611cac565b61123e9190611cf8565b6112489190611cac565b825490915060009061127c907801000000000000000000000000000000000000000000000000900463ffffffff1688611cac565b835460685491925060009167ffffffffffffffff700100000000000000000000000000000000909204821691849186916112b791168b611d0c565b6112c19190611d0c565b6112cb9190611d0c565b6112d59190611cac565b60655485549192506fffffffffffffffffffffffffffffffff908116916112fd911683611cac565b6113079190611cf8565b935493996fffffffffffffffffffffffffffffffff9094169850929650505050505050565b600080600061133a8661182e565b63ffffffff8082166000908152606760205260408120805493945092909161137f91780100000000000000000000000000000000000000000000000090041688611cac565b61138b90610c74611d0c565b82549091506000906113bb90700100000000000000000000000000000000900467ffffffffffffffff1683611cac565b63ffffffff808b16600090815260676020526040812080549394509290916114009178010000000000000000000000000000000000000000000000009004168b611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166114308b84611d0c565b61143a9190611cac565b60655487549192506000916fffffffffffffffffffffffffffffffff91821691611465911687611cac565b61146f9190611cf8565b60655485549192506000916fffffffffffffffffffffffffffffffff9182169161149a911685611cac565b6114a49190611cf8565b905060006114b28284611d0c565b9554959f6fffffffffffffffffffffffffffffffff9096169e50949c50505050505050505050505050565b63ffffffff8084166000908152606760205260408120805491928392839161152291780100000000000000000000000000000000000000000000000090041687611cac565b8254909150600090700100000000000000000000000000000000900467ffffffffffffffff166115528784611d0c565b61155c9190611cac565b60655484549192506fffffffffffffffffffffffffffffffff90811691611584911683611cac565b61158e9190611cf8565b925492986fffffffffffffffffffffffffffffffff90931697509195505050505050565b6000808080806115c461753089611d1f565b90508063ffffffff16606e14806115e257508063ffffffff1661279f145b806115f457508063ffffffff16614eaf145b1561160e576116048188886111cf565b909550935061165d565b8063ffffffff16606f148061162a57508063ffffffff16612794145b8061163c57508063ffffffff16614ea4145b1561164c5761160481888861132c565b6116578188886114dd565b90955093505b505060655460695493979296506fffffffffffffffffffffffffffffffff908116955090921692509050565b600054610100900460ff16611720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c6118c2565b73ffffffffffffffffffffffffffffffffffffffff8216611775576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146117cf576040519150601f19603f3d011682016040523d82523d6000602084013e6117d4565b606091505b5050905080610950576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610c63565b60008061183d61753084611d1f565b90508063ffffffff16606f036118565750606592915050565b8063ffffffff166127940361186f575061278992915050565b8063ffffffff16614ea4036118885750614e9992915050565b6040517f8d2da58000000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610c63565b600054610100900460ff16611959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610c63565b610a8c33611158565b803563ffffffff8116811461197657600080fd5b919050565b60008060006060848603121561199057600080fd5b61199984611962565b95602085013595506040909401359392505050565b80356fffffffffffffffffffffffffffffffff8116811461197657600080fd5b6000602082840312156119e057600080fd5b6119e9826119ae565b9392505050565b60008060208385031215611a0357600080fd5b823567ffffffffffffffff80821115611a1b57600080fd5b818501915085601f830112611a2f57600080fd5b813581811115611a3e57600080fd5b8660208260071b8501011115611a5357600080fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197657600080fd5b60008060408385031215611a9c57600080fd5b611aa583611a65565b915060208301358015158114611aba57600080fd5b809150509250929050565b803561ffff8116811461197657600080fd5b600080600060608486031215611aec57600080fd5b61199984611ac5565b600060c08284031215611b0757600080fd5b50919050565b600060208284031215611b1f57600080fd5b6119e982611a65565b600060208284031215611b3a57600080fd5b6119e982611962565b600060208284031215611b5557600080fd5b6119e982611ac5565b60008060408385031215611b7157600080fd5b611b7a83611a65565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803567ffffffffffffffff8116811461197657600080fd5b600060608284031215611be157600080fd5b6040516060810181811067ffffffffffffffff82111715611c2b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052611c37836119ae565b8152611c4560208401611bb7565b6020820152611c5660408401611962565b60408201529392505050565b600060208284031215611c7457600080fd5b6119e982611bb7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417611cc357611cc3611c7d565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611d0757611d07611cc9565b500490565b80820180821115611cc357611cc3611c7d565b600063ffffffff80841680611d3657611d36611cc9565b9216919091069291505056fea2646970667358221220914e0e3072b9f5d7c1ca228de1615ba8d6711be51203f933d6bde274cbb6f90d64736f6c63430008160033";
51568
51582
  static readonly abi: readonly [{
51569
51583
  readonly inputs: readonly [{
51570
51584
  readonly internalType: "uint256";
@@ -53103,7 +53117,7 @@ declare class Treasury__factory extends ContractFactory {
53103
53117
  }): TransactionRequest;
53104
53118
  attach(address: string): Treasury;
53105
53119
  connect(signer: Signer): Treasury__factory;
53106
- static readonly bytecode = "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ddb8061007e6000396000f3fe6080604052600436106100dd5760003560e01c80638ee643a61161007f578063bf6e753611610059578063bf6e753614610237578063d424422114610257578063d51c548614610277578063f2fde38b1461028557600080fd5b80638ee643a6146101dd57806390953238146101fd57806396a141a01461022157600080fd5b80633972d46c116100bb5780633972d46c14610153578063715018a6146101735780637e8a0699146101885780638da5cb5b146101a857600080fd5b806301d9c2cb146100e257806301e336671461011157806301f1f6e814610133575b600080fd5b3480156100ee57600080fd5b506003546100fc9060ff1681565b60405190151581526020015b60405180910390f35b34801561011d57600080fd5b5061013161012c366004610b28565b6102a5565b005b34801561013f57600080fd5b5061013161014e366004610b77565b6102bd565b34801561015f57600080fd5b5061013161016e366004610b9b565b6102f6565b34801561017f57600080fd5b50610131610303565b34801561019457600080fd5b506101316101a3366004610bb4565b610317565b3480156101b457600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b3480156101e957600080fd5b506101316101f8366004610b9b565b6103b5565b34801561020957600080fd5b5061021360025481565b604051908152602001610108565b34801561022d57600080fd5b5061021360015481565b34801561024357600080fd5b50610131610252366004610b28565b6103c2565b34801561026357600080fd5b50610213610272366004610c05565b610457565b610213610272366004610c05565b34801561029157600080fd5b506101316102a0366004610c61565b61046e565b6102ad61052a565b6102b88383836105ab565b505050565b6102c561052a565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6102fe61052a565b600155565b61030b61052a565b61031560006105db565b565b61031f61052a565b6040517f200175f700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285169063200175f790606401600060405180830381600087803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b5050505050505050565b6103bd61052a565b600255565b6103ca61052a565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b15801561043a57600080fd5b505af115801561044e573d6000803e3d6000fd5b50505050505050565b60006104638383610650565b90505b949350505050565b61047661052a565b73ffffffffffffffffffffffffffffffffffffffff811661051e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610527816105db565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610515565b73ffffffffffffffffffffffffffffffffffffffff83166105d0576102b882826106c1565b6102b88383836107c7565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561069d5760035460ff16610694576040517fd22af88c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506002546106bb565b612710600154846106ae9190610c7e565b6106b89190610cbc565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff821661070e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610768576040519150601f19603f3d011682016040523d82523d6000602084013e61076d565b606091505b50509050806102b8576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610515565b73ffffffffffffffffffffffffffffffffffffffff8216610814576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526102b892908616918591859185918591906000906108e89084908490610995565b90508051600014806109095750808060200190518101906109099190610cf7565b6102b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610515565b60606104668484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109c99190610d38565b60006040518083038185875af1925050503d8060008114610a06576040519150601f19603f3d011682016040523d82523d6000602084013e610a0b565b606091505b5091509150610a1c87838387610a27565b979650505050505050565b60608315610abd578251600003610ab65773ffffffffffffffffffffffffffffffffffffffff85163b610ab6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610515565b5081610466565b6104668383815115610ad25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105159190610d54565b73ffffffffffffffffffffffffffffffffffffffff8116811461052757600080fd5b600080600060608486031215610b3d57600080fd5b8335610b4881610b06565b92506020840135610b5881610b06565b929592945050506040919091013590565b801515811461052757600080fd5b600060208284031215610b8957600080fd5b8135610b9481610b69565b9392505050565b600060208284031215610bad57600080fd5b5035919050565b60008060008060808587031215610bca57600080fd5b8435610bd581610b06565b93506020850135610be581610b06565b92506040850135610bf581610b06565b9396929550929360600135925050565b60008060008060808587031215610c1b57600080fd5b8435610c2681610b06565b9350602085013563ffffffff81168114610c3f57600080fd5b9250604085013591506060850135610c5681610b69565b939692955090935050565b600060208284031215610c7357600080fd5b8135610b9481610b06565b80820281158282048414176106bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082610cf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610d0957600080fd5b8151610b9481610b69565b60005b83811015610d2f578181015183820152602001610d17565b50506000910152565b60008251610d4a818460208701610d14565b9190910192915050565b6020815260008251806020840152610d73816040850160208701610d14565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212202ffe248265df888f6d697ed01cbb279bc864e0198175504c2e41572b49a6fe8164736f6c63430008160033";
53120
+ static readonly bytecode = "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610ddb8061007e6000396000f3fe6080604052600436106100dd5760003560e01c80638ee643a61161007f578063bf6e753611610059578063bf6e753614610237578063d424422114610257578063d51c548614610277578063f2fde38b1461028557600080fd5b80638ee643a6146101dd57806390953238146101fd57806396a141a01461022157600080fd5b80633972d46c116100bb5780633972d46c14610153578063715018a6146101735780637e8a0699146101885780638da5cb5b146101a857600080fd5b806301d9c2cb146100e257806301e336671461011157806301f1f6e814610133575b600080fd5b3480156100ee57600080fd5b506003546100fc9060ff1681565b60405190151581526020015b60405180910390f35b34801561011d57600080fd5b5061013161012c366004610b28565b6102a5565b005b34801561013f57600080fd5b5061013161014e366004610b77565b6102bd565b34801561015f57600080fd5b5061013161016e366004610b9b565b6102f6565b34801561017f57600080fd5b50610131610303565b34801561019457600080fd5b506101316101a3366004610bb4565b610317565b3480156101b457600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b3480156101e957600080fd5b506101316101f8366004610b9b565b6103b5565b34801561020957600080fd5b5061021360025481565b604051908152602001610108565b34801561022d57600080fd5b5061021360015481565b34801561024357600080fd5b50610131610252366004610b28565b6103c2565b34801561026357600080fd5b50610213610272366004610c05565b610457565b610213610272366004610c05565b34801561029157600080fd5b506101316102a0366004610c61565b61046e565b6102ad61052a565b6102b88383836105ab565b505050565b6102c561052a565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6102fe61052a565b600155565b61030b61052a565b61031560006105db565b565b61031f61052a565b6040517f200175f700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285169063200175f790606401600060405180830381600087803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b5050505050505050565b6103bd61052a565b600255565b6103ca61052a565b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063fd9be52290604401600060405180830381600087803b15801561043a57600080fd5b505af115801561044e573d6000803e3d6000fd5b50505050505050565b60006104638383610650565b90505b949350505050565b61047661052a565b73ffffffffffffffffffffffffffffffffffffffff811661051e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610527816105db565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610515565b73ffffffffffffffffffffffffffffffffffffffff83166105d0576102b882826106c1565b6102b88383836107c7565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000811561069d5760035460ff16610694576040517fd22af88c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506002546106bb565b612710600154846106ae9190610c7e565b6106b89190610cbc565b90505b92915050565b73ffffffffffffffffffffffffffffffffffffffff821661070e576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610768576040519150601f19603f3d011682016040523d82523d6000602084013e61076d565b606091505b50509050806102b8576040517f2c024f9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610515565b73ffffffffffffffffffffffffffffffffffffffff8216610814576040517f32fa6a1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526102b892908616918591859185918591906000906108e89084908490610995565b90508051600014806109095750808060200190518101906109099190610cf7565b6102b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610515565b60606104668484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516109c99190610d38565b60006040518083038185875af1925050503d8060008114610a06576040519150601f19603f3d011682016040523d82523d6000602084013e610a0b565b606091505b5091509150610a1c87838387610a27565b979650505050505050565b60608315610abd578251600003610ab65773ffffffffffffffffffffffffffffffffffffffff85163b610ab6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610515565b5081610466565b6104668383815115610ad25781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105159190610d54565b73ffffffffffffffffffffffffffffffffffffffff8116811461052757600080fd5b600080600060608486031215610b3d57600080fd5b8335610b4881610b06565b92506020840135610b5881610b06565b929592945050506040919091013590565b801515811461052757600080fd5b600060208284031215610b8957600080fd5b8135610b9481610b69565b9392505050565b600060208284031215610bad57600080fd5b5035919050565b60008060008060808587031215610bca57600080fd5b8435610bd581610b06565b93506020850135610be581610b06565b92506040850135610bf581610b06565b9396929550929360600135925050565b60008060008060808587031215610c1b57600080fd5b8435610c2681610b06565b9350602085013563ffffffff81168114610c3f57600080fd5b9250604085013591506060850135610c5681610b69565b939692955090935050565b600060208284031215610c7357600080fd5b8135610b9481610b06565b80820281158282048414176106bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082610cf2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610d0957600080fd5b8151610b9481610b69565b60005b83811015610d2f578181015183820152602001610d17565b50506000910152565b60008251610d4a818460208701610d14565b9190910192915050565b6020815260008251806020840152610d73816040850160208701610d14565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220cae62a2788a6ff579ae01fb3f8e558344b48ee181f57c669a84b51501e544da364736f6c63430008160033";
53107
53121
  static readonly abi: readonly [{
53108
53122
  readonly inputs: readonly [];
53109
53123
  readonly name: "LzTokenNotEnabled";