From c70978d81076b80f5c7a8b476bc2e76571b24d39 Mon Sep 17 00:00:00 2001 From: invocamanman Date: Wed, 23 Nov 2022 12:35:18 +0100 Subject: [PATCH] rebase fixes --- compiled-contracts/Bridge.json | 4 ++-- compiled-contracts/BridgeMock.json | 4 ++-- compiled-contracts/ProofOfEfficiency.json | 4 ++-- compiled-contracts/ProofOfEfficiencyMock.json | 4 ++-- contracts/Bridge.sol | 2 +- contracts/ProofOfEfficiency.sol | 2 +- docs/ProofOfEfficiency.md | 2 +- test/contracts/bridge.test.js | 8 ++++---- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/compiled-contracts/Bridge.json b/compiled-contracts/Bridge.json index 34b76d590..8e1df7d9f 100644 --- a/compiled-contracts/Bridge.json +++ b/compiled-contracts/Bridge.json @@ -776,8 +776,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50615829806100206000396000f3fe608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f136600462003146565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031d3565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de3660046200320f565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003317565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003395565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034a6565b62000fa6565b3480156200047e57600080fd5b50620001f7620004903660046200358d565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034a6565b62001428565b348015620004e057600080fd5b506200028e620004f2366004620035e3565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e62000598366004620035fd565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036b1565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b506200024062000643366004620035e3565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f762000677366004620035e3565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b33660046200320f565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003728565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037c3565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037c3565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef9190620037fc565b60405160200162000b03939291906200384a565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b5998979695949392919062003887565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de8620038f3565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003951565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e92906200398d565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf620038f3565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f37620038f3565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003951565b91508062000f8e816200398d565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039c8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a01565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c3f565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cc9565b62000d2c600062002d25565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a01565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002d8f565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a1f565b925092509250600085848484604051620016e890620030af565b620016f6939291906200384a565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab919062003728565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003728565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030af565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003acb565b60408051601f198184030181529082905262001aba929160200162003b0c565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a919062003887565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dda565b62001ec662002cc9565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cc9565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d25565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8992505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b3f565b8101906200204c919062003b6b565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a01565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b3f565b81019062002396919062003bc6565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a01565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e90565b50505050565b806001620026866020600262003d8b565b62002692919062003d99565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003db3565b909155505060215460005b6020811015620027c957816001166001036200275f578260018260208110620027575762002757620038f3565b015550505050565b60018160208110620027755762002775620038f3565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003951565b915080620027c0816200398d565b9150506200272a565b50620027d462003dce565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003dfd565b9050801580159062002a115750608d5462002a0e824262003d99565b10155b62002a855760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b075760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b2057508862002b23565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bf1908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d25565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e545760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7c9092919063ffffffff16565b805190915015620027d4578080602001905181019062002f08919062003728565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fa6919062003a01565b60006040518083038185875af1925050503d806000811462002fe5576040519150601f19603f3d011682016040523d82523d6000602084013e62002fea565b606091505b509150915062002ffd8783838762003008565b979650505050505050565b606083156200307c57825160000362003074576001600160a01b0385163b620030745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030935781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e17565b6119c78062003e2d83390190565b6001600160a01b038116811462001f9457600080fd5b8035620030e081620030bd565b919050565b803563ffffffff81168114620030e057600080fd5b60008083601f8401126200310d57600080fd5b50813567ffffffffffffffff8111156200312657600080fd5b6020830191508360208285010111156200313f57600080fd5b9250929050565b60008060008060008060a087890312156200316057600080fd5b86356200316d81620030bd565b95506200317d60208801620030e5565b945060408701356200318f81620030bd565b935060608701359250608087013567ffffffffffffffff811115620031b357600080fd5b620031c189828a01620030fa565b979a9699509497509295939492505050565b60008060408385031215620031e757600080fd5b620031f283620030e5565b915060208301356200320481620030bd565b809150509250929050565b6000602082840312156200322257600080fd5b81356200322f81620030bd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003291576200329162003236565b604052919050565b600082601f830112620032ab57600080fd5b8135602067ffffffffffffffff821115620032ca57620032ca62003236565b8160051b620032db82820162003265565b9283528481018201928281019087851115620032f657600080fd5b83870192505b8483101562002ffd57823582529183019190830190620032fc565b600080600080608085870312156200332e57600080fd5b84359350602085013567ffffffffffffffff808211156200334e57600080fd5b6200335c8883890162003299565b94506040870135915080821682146200337457600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033b157600080fd5b8735620033be8162003385565b9650620033ce60208901620030e5565b95506040880135620033e081620030bd565b9450620033f060608901620030e5565b935060808801356200340281620030bd565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200343c576200343c62003236565b50601f01601f191660200190565b600082601f8301126200345c57600080fd5b8135620034736200346d826200341f565b62003265565b8181528460208386010111156200348957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034c757600080fd5b8a3567ffffffffffffffff80821115620034e057600080fd5b620034ee8e838f0162003299565b9b50620034fe60208e01620030e5565b9a5060408d0135995060608d013598506200351c60808e01620030e5565b97506200352c60a08e01620030d3565b96506200353c60c08e01620030e5565b95506200354c60e08e01620030d3565b94506101008d013593506101208d01359150808211156200356c57600080fd5b506200357b8d828e016200344a565b9150509295989b9194979a5092959850565b60008060008060808587031215620035a457600080fd5b620035af85620030e5565b93506020850135620035c181620030bd565b92506040850135620035d381620030bd565b9396929550929360600135925050565b600060208284031215620035f657600080fd5b5035919050565b600080600080600080600060a0888a0312156200361957600080fd5b6200362488620030e5565b965060208801356200363681620030bd565b9550604088013567ffffffffffffffff808211156200365457600080fd5b620036628b838c01620030fa565b909750955060608a01359150808211156200367c57600080fd5b506200368b8a828b01620030fa565b9094509250506080880135620036a18162003385565b8091505092959891949750929550565b600080600060608486031215620036c757600080fd5b620036d284620030e5565b92506020840135620036e481620030bd565b9150604084013567ffffffffffffffff8111156200370157600080fd5b6200370f868287016200344a565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200373b57600080fd5b81516200322f8162003719565b60005b83811015620037655781810151838201526020016200374b565b838111156200266f5750506000910152565b600082601f8301126200378957600080fd5b81516200379a6200346d826200341f565b818152846020838601011115620037b057600080fd5b62000f9e82602083016020870162003748565b600060208284031215620037d657600080fd5b815167ffffffffffffffff811115620037ee57600080fd5b62000f9e8482850162003777565b6000602082840312156200380f57600080fd5b81516200322f8162003385565b600081518084526200383681602086016020860162003748565b601f01601f19169290920160200192915050565b6060815260006200385f60608301866200381c565b82810360208401526200387381866200381c565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620038da828501876200381c565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003988577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c157620039c162003922565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620039f860608301846200381c565b95945050505050565b6000825162003a1581846020870162003748565b9190910192915050565b60008060006060848603121562003a3557600080fd5b835167ffffffffffffffff8082111562003a4e57600080fd5b62003a5c8783880162003777565b9450602086015191508082111562003a7357600080fd5b5062003a828682870162003777565b925050604084015162003a958162003385565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003ae160608301878962003aa0565b828103602084015262003af681868862003aa0565b91505060ff831660408301529695505050505050565b6000835162003b2081846020880162003748565b83519083019062003b3681836020880162003748565b01949350505050565b6000808585111562003b5057600080fd5b8386111562003b5e57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003b8757600080fd5b873562003b9481620030bd565b9650602088013562003ba681620030bd565b955060408801359450606088013593506080880135620034028162003385565b600080600080600080600080610100898b03121562003be457600080fd5b883562003bf181620030bd565b9750602089013562003c0381620030bd565b96506040890135955060608901359450608089013562003c238162003719565b935060a089013562003c358162003385565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cb157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003c955762003c9562003922565b8085161562003ca357918102915b93841c939080029062003c57565b509250929050565b60008262003cca5750600162000dab565b8162003cd95750600062000dab565b816001811462003cf2576002811462003cfd5762003d1d565b600191505062000dab565b60ff84111562003d115762003d1162003922565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d42575081810a62000dab565b62003d4e838362003c52565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d835762003d8362003922565b029392505050565b60006200322f838362003cb9565b60008282101562003dae5762003dae62003922565b500390565b6000821982111562003dc95762003dc962003922565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e1057600080fd5b5051919050565b6020815260006200322f60208301846200381c56fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212205fe92e73a9d814c47728c0c663c06d86a6ecd1c16944312d7e8053db89a30c6b64736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f136600462003146565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031d3565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de3660046200320f565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003317565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003395565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034a6565b62000fa6565b3480156200047e57600080fd5b50620001f7620004903660046200358d565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034a6565b62001428565b348015620004e057600080fd5b506200028e620004f2366004620035e3565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e62000598366004620035fd565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036b1565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b506200024062000643366004620035e3565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f762000677366004620035e3565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b33660046200320f565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003728565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037c3565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037c3565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef9190620037fc565b60405160200162000b03939291906200384a565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b5998979695949392919062003887565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de8620038f3565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003951565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e92906200398d565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf620038f3565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f37620038f3565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003951565b91508062000f8e816200398d565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039c8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a01565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c3f565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cc9565b62000d2c600062002d25565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a01565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002d8f565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a1f565b925092509250600085848484604051620016e890620030af565b620016f6939291906200384a565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab919062003728565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003728565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030af565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003acb565b60408051601f198184030181529082905262001aba929160200162003b0c565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a919062003887565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dda565b62001ec662002cc9565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cc9565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d25565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8992505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b3f565b8101906200204c919062003b6b565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a01565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b3f565b81019062002396919062003bc6565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a01565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e90565b50505050565b806001620026866020600262003d8b565b62002692919062003d99565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003db3565b909155505060215460005b6020811015620027c957816001166001036200275f578260018260208110620027575762002757620038f3565b015550505050565b60018160208110620027755762002775620038f3565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003951565b915080620027c0816200398d565b9150506200272a565b50620027d462003dce565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003dfd565b9050801580159062002a115750608d5462002a0e824262003d99565b10155b62002a855760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b075760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b2057508862002b23565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bf1908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d25565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e545760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7c9092919063ffffffff16565b805190915015620027d4578080602001905181019062002f08919062003728565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fa6919062003a01565b60006040518083038185875af1925050503d806000811462002fe5576040519150601f19603f3d011682016040523d82523d6000602084013e62002fea565b606091505b509150915062002ffd8783838762003008565b979650505050505050565b606083156200307c57825160000362003074576001600160a01b0385163b620030745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030935781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e17565b6119c78062003e2d83390190565b6001600160a01b038116811462001f9457600080fd5b8035620030e081620030bd565b919050565b803563ffffffff81168114620030e057600080fd5b60008083601f8401126200310d57600080fd5b50813567ffffffffffffffff8111156200312657600080fd5b6020830191508360208285010111156200313f57600080fd5b9250929050565b60008060008060008060a087890312156200316057600080fd5b86356200316d81620030bd565b95506200317d60208801620030e5565b945060408701356200318f81620030bd565b935060608701359250608087013567ffffffffffffffff811115620031b357600080fd5b620031c189828a01620030fa565b979a9699509497509295939492505050565b60008060408385031215620031e757600080fd5b620031f283620030e5565b915060208301356200320481620030bd565b809150509250929050565b6000602082840312156200322257600080fd5b81356200322f81620030bd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003291576200329162003236565b604052919050565b600082601f830112620032ab57600080fd5b8135602067ffffffffffffffff821115620032ca57620032ca62003236565b8160051b620032db82820162003265565b9283528481018201928281019087851115620032f657600080fd5b83870192505b8483101562002ffd57823582529183019190830190620032fc565b600080600080608085870312156200332e57600080fd5b84359350602085013567ffffffffffffffff808211156200334e57600080fd5b6200335c8883890162003299565b94506040870135915080821682146200337457600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033b157600080fd5b8735620033be8162003385565b9650620033ce60208901620030e5565b95506040880135620033e081620030bd565b9450620033f060608901620030e5565b935060808801356200340281620030bd565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200343c576200343c62003236565b50601f01601f191660200190565b600082601f8301126200345c57600080fd5b8135620034736200346d826200341f565b62003265565b8181528460208386010111156200348957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034c757600080fd5b8a3567ffffffffffffffff80821115620034e057600080fd5b620034ee8e838f0162003299565b9b50620034fe60208e01620030e5565b9a5060408d0135995060608d013598506200351c60808e01620030e5565b97506200352c60a08e01620030d3565b96506200353c60c08e01620030e5565b95506200354c60e08e01620030d3565b94506101008d013593506101208d01359150808211156200356c57600080fd5b506200357b8d828e016200344a565b9150509295989b9194979a5092959850565b60008060008060808587031215620035a457600080fd5b620035af85620030e5565b93506020850135620035c181620030bd565b92506040850135620035d381620030bd565b9396929550929360600135925050565b600060208284031215620035f657600080fd5b5035919050565b600080600080600080600060a0888a0312156200361957600080fd5b6200362488620030e5565b965060208801356200363681620030bd565b9550604088013567ffffffffffffffff808211156200365457600080fd5b620036628b838c01620030fa565b909750955060608a01359150808211156200367c57600080fd5b506200368b8a828b01620030fa565b9094509250506080880135620036a18162003385565b8091505092959891949750929550565b600080600060608486031215620036c757600080fd5b620036d284620030e5565b92506020840135620036e481620030bd565b9150604084013567ffffffffffffffff8111156200370157600080fd5b6200370f868287016200344a565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200373b57600080fd5b81516200322f8162003719565b60005b83811015620037655781810151838201526020016200374b565b838111156200266f5750506000910152565b600082601f8301126200378957600080fd5b81516200379a6200346d826200341f565b818152846020838601011115620037b057600080fd5b62000f9e82602083016020870162003748565b600060208284031215620037d657600080fd5b815167ffffffffffffffff811115620037ee57600080fd5b62000f9e8482850162003777565b6000602082840312156200380f57600080fd5b81516200322f8162003385565b600081518084526200383681602086016020860162003748565b601f01601f19169290920160200192915050565b6060815260006200385f60608301866200381c565b82810360208401526200387381866200381c565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620038da828501876200381c565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003988577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c157620039c162003922565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620039f860608301846200381c565b95945050505050565b6000825162003a1581846020870162003748565b9190910192915050565b60008060006060848603121562003a3557600080fd5b835167ffffffffffffffff8082111562003a4e57600080fd5b62003a5c8783880162003777565b9450602086015191508082111562003a7357600080fd5b5062003a828682870162003777565b925050604084015162003a958162003385565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003ae160608301878962003aa0565b828103602084015262003af681868862003aa0565b91505060ff831660408301529695505050505050565b6000835162003b2081846020880162003748565b83519083019062003b3681836020880162003748565b01949350505050565b6000808585111562003b5057600080fd5b8386111562003b5e57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003b8757600080fd5b873562003b9481620030bd565b9650602088013562003ba681620030bd565b955060408801359450606088013593506080880135620034028162003385565b600080600080600080600080610100898b03121562003be457600080fd5b883562003bf181620030bd565b9750602089013562003c0381620030bd565b96506040890135955060608901359450608089013562003c238162003719565b935060a089013562003c358162003385565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cb157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003c955762003c9562003922565b8085161562003ca357918102915b93841c939080029062003c57565b509250929050565b60008262003cca5750600162000dab565b8162003cd95750600062000dab565b816001811462003cf2576002811462003cfd5762003d1d565b600191505062000dab565b60ff84111562003d115762003d1162003922565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d42575081810a62000dab565b62003d4e838362003c52565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d835762003d8362003922565b029392505050565b60006200322f838362003cb9565b60008282101562003dae5762003dae62003922565b500390565b6000821982111562003dc95762003dc962003922565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e1057600080fd5b5051919050565b6020815260006200322f60208301846200381c56fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212205fe92e73a9d814c47728c0c663c06d86a6ecd1c16944312d7e8053db89a30c6b64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5061584f806100206000396000f3fe608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f13660046200316c565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031f9565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de36600462003235565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b5062000240620003653660046200333d565b62000ea4565b3480156200037857600080fd5b50620002116200038a366004620033bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034cc565b62000fa6565b3480156200047e57600080fd5b50620001f762000490366004620035b3565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034cc565b62001428565b348015620004e057600080fd5b506200028e620004f236600462003609565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e6200059836600462003623565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036d7565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b50620002406200064336600462003609565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f76200067736600462003609565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b336600462003235565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096191906200374e565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037e9565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037e9565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef919062003822565b60405160200162000b039392919062003870565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b59989796959493929190620038ad565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de862003919565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003977565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e9290620039b3565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf62003919565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f3762003919565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003977565b91508062000f8e81620039b3565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039ee565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a27565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c65565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cef565b62000d2c600062002d4b565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a27565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002db5565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a45565b925092509250600085848484604051620016e890620030d5565b620016f69392919062003870565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab91906200374e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b91906200374e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030d5565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003af1565b60408051601f198184030181529082905262001aba929160200162003b32565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a9190620038ad565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002e00565b62001ec662002cef565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cef565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d4b565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002eaf92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b65565b8101906200204c919062003b91565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a27565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b65565b81019062002396919062003bec565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a27565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002eb6565b50505050565b806001620026866020600262003db1565b62002692919062003dbf565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003dd9565b909155505060215460005b6020811015620027c957816001166001036200275f57826001826020811062002757576200275762003919565b015550505050565b6001816020811062002775576200277562003919565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003977565b915080620027c081620039b3565b9150506200272a565b50620027d462003df4565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003e23565b9050801580159062002a115750608d5462002a0e824262003dbf565b10155b62002aab5760405162461bcd60e51b815260206004820152604260248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49445f4f525f4e4f545f5945545f434c41494d414260648201527f4c45000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff87811691161462002b2d5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b4657508862002b49565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002c17908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002ce45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d4b565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e7a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002f0d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002fa29092919063ffffffff16565b805190915015620027d4578080602001905181019062002f2e91906200374e565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fcc919062003a27565b60006040518083038185875af1925050503d80600081146200300b576040519150601f19603f3d011682016040523d82523d6000602084013e62003010565b606091505b509150915062003023878383876200302e565b979650505050505050565b60608315620030a25782516000036200309a576001600160a01b0385163b6200309a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030b95781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e3d565b6119c78062003e5383390190565b6001600160a01b038116811462001f9457600080fd5b80356200310681620030e3565b919050565b803563ffffffff811681146200310657600080fd5b60008083601f8401126200313357600080fd5b50813567ffffffffffffffff8111156200314c57600080fd5b6020830191508360208285010111156200316557600080fd5b9250929050565b60008060008060008060a087890312156200318657600080fd5b86356200319381620030e3565b9550620031a3602088016200310b565b94506040870135620031b581620030e3565b935060608701359250608087013567ffffffffffffffff811115620031d957600080fd5b620031e789828a0162003120565b979a9699509497509295939492505050565b600080604083850312156200320d57600080fd5b62003218836200310b565b915060208301356200322a81620030e3565b809150509250929050565b6000602082840312156200324857600080fd5b81356200325581620030e3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620032b757620032b76200325c565b604052919050565b600082601f830112620032d157600080fd5b8135602067ffffffffffffffff821115620032f057620032f06200325c565b8160051b620033018282016200328b565b92835284810182019282810190878511156200331c57600080fd5b83870192505b84831015620030235782358252918301919083019062003322565b600080600080608085870312156200335457600080fd5b84359350602085013567ffffffffffffffff808211156200337457600080fd5b6200338288838901620032bf565b94506040870135915080821682146200339a57600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033d757600080fd5b8735620033e481620033ab565b9650620033f4602089016200310b565b955060408801356200340681620030e3565b945062003416606089016200310b565b935060808801356200342881620030e3565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200346257620034626200325c565b50601f01601f191660200190565b600082601f8301126200348257600080fd5b813562003499620034938262003445565b6200328b565b818152846020838601011115620034af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034ed57600080fd5b8a3567ffffffffffffffff808211156200350657600080fd5b620035148e838f01620032bf565b9b506200352460208e016200310b565b9a5060408d0135995060608d013598506200354260808e016200310b565b97506200355260a08e01620030f9565b96506200356260c08e016200310b565b95506200357260e08e01620030f9565b94506101008d013593506101208d01359150808211156200359257600080fd5b50620035a18d828e0162003470565b9150509295989b9194979a5092959850565b60008060008060808587031215620035ca57600080fd5b620035d5856200310b565b93506020850135620035e781620030e3565b92506040850135620035f981620030e3565b9396929550929360600135925050565b6000602082840312156200361c57600080fd5b5035919050565b600080600080600080600060a0888a0312156200363f57600080fd5b6200364a886200310b565b965060208801356200365c81620030e3565b9550604088013567ffffffffffffffff808211156200367a57600080fd5b620036888b838c0162003120565b909750955060608a0135915080821115620036a257600080fd5b50620036b18a828b0162003120565b9094509250506080880135620036c781620033ab565b8091505092959891949750929550565b600080600060608486031215620036ed57600080fd5b620036f8846200310b565b925060208401356200370a81620030e3565b9150604084013567ffffffffffffffff8111156200372757600080fd5b620037358682870162003470565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200376157600080fd5b815162003255816200373f565b60005b838110156200378b57818101518382015260200162003771565b838111156200266f5750506000910152565b600082601f830112620037af57600080fd5b8151620037c0620034938262003445565b818152846020838601011115620037d657600080fd5b62000f9e8260208301602087016200376e565b600060208284031215620037fc57600080fd5b815167ffffffffffffffff8111156200381457600080fd5b62000f9e848285016200379d565b6000602082840312156200383557600080fd5b81516200325581620033ab565b600081518084526200385c8160208601602086016200376e565b601f01601f19169290920160200192915050565b60608152600062003885606083018662003842565b828103602084015262003899818662003842565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620039008285018762003842565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039e757620039e762003948565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a1e606083018462003842565b95945050505050565b6000825162003a3b8184602087016200376e565b9190910192915050565b60008060006060848603121562003a5b57600080fd5b835167ffffffffffffffff8082111562003a7457600080fd5b62003a82878388016200379d565b9450602086015191508082111562003a9957600080fd5b5062003aa8868287016200379d565b925050604084015162003abb81620033ab565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003b0760608301878962003ac6565b828103602084015262003b1c81868862003ac6565b91505060ff831660408301529695505050505050565b6000835162003b468184602088016200376e565b83519083019062003b5c8183602088016200376e565b01949350505050565b6000808585111562003b7657600080fd5b8386111562003b8457600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003bad57600080fd5b873562003bba81620030e3565b9650602088013562003bcc81620030e3565b9550604088013594506060880135935060808801356200342881620033ab565b600080600080600080600080610100898b03121562003c0a57600080fd5b883562003c1781620030e3565b9750602089013562003c2981620030e3565b96506040890135955060608901359450608089013562003c49816200373f565b935060a089013562003c5b81620033ab565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cd757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003cbb5762003cbb62003948565b8085161562003cc957918102915b93841c939080029062003c7d565b509250929050565b60008262003cf05750600162000dab565b8162003cff5750600062000dab565b816001811462003d18576002811462003d235762003d43565b600191505062000dab565b60ff84111562003d375762003d3762003948565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d68575081810a62000dab565b62003d74838362003c78565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003da95762003da962003948565b029392505050565b600062003255838362003cdf565b60008282101562003dd45762003dd462003948565b500390565b6000821982111562003def5762003def62003948565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e3657600080fd5b5051919050565b6020815260006200325560208301846200384256fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212207d802e4c153f08d52b883999d6ed4e590e1894e2db82359c2f8cde0298f066c464736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f13660046200316c565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031f9565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de36600462003235565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b5062000240620003653660046200333d565b62000ea4565b3480156200037857600080fd5b50620002116200038a366004620033bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034cc565b62000fa6565b3480156200047e57600080fd5b50620001f762000490366004620035b3565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034cc565b62001428565b348015620004e057600080fd5b506200028e620004f236600462003609565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e6200059836600462003623565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036d7565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b50620002406200064336600462003609565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f76200067736600462003609565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b336600462003235565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200096191906200374e565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037e9565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037e9565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef919062003822565b60405160200162000b039392919062003870565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b59989796959493929190620038ad565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de862003919565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003977565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e9290620039b3565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf62003919565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f3762003919565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003977565b91508062000f8e81620039b3565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039ee565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a27565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c65565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cef565b62000d2c600062002d4b565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a27565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002db5565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a45565b925092509250600085848484604051620016e890620030d5565b620016f69392919062003870565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab91906200374e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b91906200374e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030d5565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003af1565b60408051601f198184030181529082905262001aba929160200162003b32565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a9190620038ad565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002e00565b62001ec662002cef565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cef565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d4b565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002eaf92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b65565b8101906200204c919062003b91565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a27565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b65565b81019062002396919062003bec565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a27565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002eb6565b50505050565b806001620026866020600262003db1565b62002692919062003dbf565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003dd9565b909155505060215460005b6020811015620027c957816001166001036200275f57826001826020811062002757576200275762003919565b015550505050565b6001816020811062002775576200277562003919565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003977565b915080620027c081620039b3565b9150506200272a565b50620027d462003df4565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003e23565b9050801580159062002a115750608d5462002a0e824262003dbf565b10155b62002aab5760405162461bcd60e51b815260206004820152604260248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49445f4f525f4e4f545f5945545f434c41494d414260648201527f4c45000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff87811691161462002b2d5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b4657508862002b49565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002c17908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002ce45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d4b565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e7a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002f0d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002fa29092919063ffffffff16565b805190915015620027d4578080602001905181019062002f2e91906200374e565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fcc919062003a27565b60006040518083038185875af1925050503d80600081146200300b576040519150601f19603f3d011682016040523d82523d6000602084013e62003010565b606091505b509150915062003023878383876200302e565b979650505050505050565b60608315620030a25782516000036200309a576001600160a01b0385163b6200309a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030b95781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e3d565b6119c78062003e5383390190565b6001600160a01b038116811462001f9457600080fd5b80356200310681620030e3565b919050565b803563ffffffff811681146200310657600080fd5b60008083601f8401126200313357600080fd5b50813567ffffffffffffffff8111156200314c57600080fd5b6020830191508360208285010111156200316557600080fd5b9250929050565b60008060008060008060a087890312156200318657600080fd5b86356200319381620030e3565b9550620031a3602088016200310b565b94506040870135620031b581620030e3565b935060608701359250608087013567ffffffffffffffff811115620031d957600080fd5b620031e789828a0162003120565b979a9699509497509295939492505050565b600080604083850312156200320d57600080fd5b62003218836200310b565b915060208301356200322a81620030e3565b809150509250929050565b6000602082840312156200324857600080fd5b81356200325581620030e3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620032b757620032b76200325c565b604052919050565b600082601f830112620032d157600080fd5b8135602067ffffffffffffffff821115620032f057620032f06200325c565b8160051b620033018282016200328b565b92835284810182019282810190878511156200331c57600080fd5b83870192505b84831015620030235782358252918301919083019062003322565b600080600080608085870312156200335457600080fd5b84359350602085013567ffffffffffffffff808211156200337457600080fd5b6200338288838901620032bf565b94506040870135915080821682146200339a57600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033d757600080fd5b8735620033e481620033ab565b9650620033f4602089016200310b565b955060408801356200340681620030e3565b945062003416606089016200310b565b935060808801356200342881620030e3565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200346257620034626200325c565b50601f01601f191660200190565b600082601f8301126200348257600080fd5b813562003499620034938262003445565b6200328b565b818152846020838601011115620034af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034ed57600080fd5b8a3567ffffffffffffffff808211156200350657600080fd5b620035148e838f01620032bf565b9b506200352460208e016200310b565b9a5060408d0135995060608d013598506200354260808e016200310b565b97506200355260a08e01620030f9565b96506200356260c08e016200310b565b95506200357260e08e01620030f9565b94506101008d013593506101208d01359150808211156200359257600080fd5b50620035a18d828e0162003470565b9150509295989b9194979a5092959850565b60008060008060808587031215620035ca57600080fd5b620035d5856200310b565b93506020850135620035e781620030e3565b92506040850135620035f981620030e3565b9396929550929360600135925050565b6000602082840312156200361c57600080fd5b5035919050565b600080600080600080600060a0888a0312156200363f57600080fd5b6200364a886200310b565b965060208801356200365c81620030e3565b9550604088013567ffffffffffffffff808211156200367a57600080fd5b620036888b838c0162003120565b909750955060608a0135915080821115620036a257600080fd5b50620036b18a828b0162003120565b9094509250506080880135620036c781620033ab565b8091505092959891949750929550565b600080600060608486031215620036ed57600080fd5b620036f8846200310b565b925060208401356200370a81620030e3565b9150604084013567ffffffffffffffff8111156200372757600080fd5b620037358682870162003470565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200376157600080fd5b815162003255816200373f565b60005b838110156200378b57818101518382015260200162003771565b838111156200266f5750506000910152565b600082601f830112620037af57600080fd5b8151620037c0620034938262003445565b818152846020838601011115620037d657600080fd5b62000f9e8260208301602087016200376e565b600060208284031215620037fc57600080fd5b815167ffffffffffffffff8111156200381457600080fd5b62000f9e848285016200379d565b6000602082840312156200383557600080fd5b81516200325581620033ab565b600081518084526200385c8160208601602086016200376e565b601f01601f19169290920160200192915050565b60608152600062003885606083018662003842565b828103602084015262003899818662003842565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620039008285018762003842565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039e757620039e762003948565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a1e606083018462003842565b95945050505050565b6000825162003a3b8184602087016200376e565b9190910192915050565b60008060006060848603121562003a5b57600080fd5b835167ffffffffffffffff8082111562003a7457600080fd5b62003a82878388016200379d565b9450602086015191508082111562003a9957600080fd5b5062003aa8868287016200379d565b925050604084015162003abb81620033ab565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003b0760608301878962003ac6565b828103602084015262003b1c81868862003ac6565b91505060ff831660408301529695505050505050565b6000835162003b468184602088016200376e565b83519083019062003b5c8183602088016200376e565b01949350505050565b6000808585111562003b7657600080fd5b8386111562003b8457600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003bad57600080fd5b873562003bba81620030e3565b9650602088013562003bcc81620030e3565b9550604088013594506060880135935060808801356200342881620033ab565b600080600080600080600080610100898b03121562003c0a57600080fd5b883562003c1781620030e3565b9750602089013562003c2981620030e3565b96506040890135955060608901359450608089013562003c49816200373f565b935060a089013562003c5b81620033ab565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cd757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003cbb5762003cbb62003948565b8085161562003cc957918102915b93841c939080029062003c7d565b509250929050565b60008262003cf05750600162000dab565b8162003cff5750600062000dab565b816001811462003d18576002811462003d235762003d43565b600191505062000dab565b60ff84111562003d375762003d3762003948565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d68575081810a62000dab565b62003d74838362003c78565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003da95762003da962003948565b029392505050565b600062003255838362003cdf565b60008282101562003dd45762003dd462003948565b500390565b6000821982111562003def5762003def62003948565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e3657600080fd5b5051919050565b6020815260006200325560208301846200384256fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212207d802e4c153f08d52b883999d6ed4e590e1894e2db82359c2f8cde0298f066c464736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/BridgeMock.json b/compiled-contracts/BridgeMock.json index 53ffab780..5541a263d 100644 --- a/compiled-contracts/BridgeMock.json +++ b/compiled-contracts/BridgeMock.json @@ -815,8 +815,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506159dc806100206000396000f3fe608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b62000215366004620032db565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac36600462003368565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033a4565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033be565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c366004620033e3565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d3366004620034e4565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003562565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003673565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe3660046200375a565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003673565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033a4565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037b0565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c36600462003864565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033a4565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033a4565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b62000739366004620033e3565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038cc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e6002846200392a565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a9062003966565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038cc565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038cc565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b686002836200392a565b91508062000b768162003966565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b908790602401620039fe565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a37565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b620025f3565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c4600062002678565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a37565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b0386168484620026e2565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003aa1565b925092509250600085848484604051620012dc9062003244565b620012ea9392919062003b22565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b6e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b6e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620016619062003244565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bb9565b60408051601f1981840301815290829052620016ae929160200162003bfa565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c2d565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b9062002792565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028f1565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b888162002678565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b6e565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029a0565b62001e576001600160a01b038b1633308a62002fc5565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003c99565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003c99565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cd2565b60405160200162001fba9392919062003b22565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c2d565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b89062002792565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003cf2565b90508015801590620023c55750608d54620023c2824262003d0c565b10155b620024395760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024bb5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d4575088620024d7565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a5908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301e565b505050565b806001620027a36020600262003e5f565b620027af919062003d0c565b60215410620028275760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283c919062003e6d565b909155505060215460005b6020811015620028e657816001166001036200287c578260018260208110620028745762002874620038cc565b015550505050565b60018160208110620028925762002892620038cc565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cf91906200392a565b915080620028dd8162003966565b91505062002847565b506200278d62003e88565b60225460ff166200296b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310a92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce557600080808080808062002a46896004818d62003eb7565b81019062002a55919062003ee3565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aec5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6c5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be35760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c91919062003a37565b6000604051808303816000865af19150503d806000811462002cd0576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd5565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d785760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d908a6004818e62003eb7565b81019062002d9f919062003f3e565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e385760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb85760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6f919062003a37565b6000604051808303816000865af19150503d806000811462002fae576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb3565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030189085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002728565b50505050565b600062003075826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031119092919063ffffffff16565b8051909150156200278d578080602001905181019062003096919062003b6e565b6200278d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b031685876040516200313b919062003a37565b60006040518083038185875af1925050503d80600081146200317a576040519150601f19603f3d011682016040523d82523d6000602084013e6200317f565b606091505b509150915062003192878383876200319d565b979650505050505050565b606083156200321157825160000362003209576001600160a01b0385163b620032095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b868383815115620032285781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003fca565b6119c78062003fe083390190565b6001600160a01b038116811462001b8857600080fd5b8035620032758162003252565b919050565b803563ffffffff811681146200327557600080fd5b60008083601f840112620032a257600080fd5b50813567ffffffffffffffff811115620032bb57600080fd5b602083019150836020828501011115620032d457600080fd5b9250929050565b60008060008060008060a08789031215620032f557600080fd5b8635620033028162003252565b955062003312602088016200327a565b94506040870135620033248162003252565b935060608701359250608087013567ffffffffffffffff8111156200334857600080fd5b6200335689828a016200328f565b979a9699509497509295939492505050565b600080604083850312156200337c57600080fd5b62003387836200327a565b91506020830135620033998162003252565b809150509250929050565b600060208284031215620033b757600080fd5b5035919050565b600060208284031215620033d157600080fd5b620033dc826200327a565b9392505050565b600060208284031215620033f657600080fd5b8135620033dc8162003252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200345e576200345e62003403565b604052919050565b600082601f8301126200347857600080fd5b8135602067ffffffffffffffff82111562003497576200349762003403565b8160051b620034a882820162003432565b9283528481018201928281019087851115620034c357600080fd5b83870192505b848310156200319257823582529183019190830190620034c9565b60008060008060808587031215620034fb57600080fd5b84359350602085013567ffffffffffffffff808211156200351b57600080fd5b620035298883890162003466565b94506040870135915080821682146200354157600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a0312156200357e57600080fd5b87356200358b8162003552565b96506200359b602089016200327a565b95506040880135620035ad8162003252565b9450620035bd606089016200327a565b93506080880135620035cf8162003252565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003609576200360962003403565b50601f01601f191660200190565b600082601f8301126200362957600080fd5b8135620036406200363a82620035ec565b62003432565b8181528460208386010111156200365657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200369457600080fd5b8a3567ffffffffffffffff80821115620036ad57600080fd5b620036bb8e838f0162003466565b9b50620036cb60208e016200327a565b9a5060408d0135995060608d01359850620036e960808e016200327a565b9750620036f960a08e0162003268565b96506200370960c08e016200327a565b95506200371960e08e0162003268565b94506101008d013593506101208d01359150808211156200373957600080fd5b50620037488d828e0162003617565b9150509295989b9194979a5092959850565b600080600080608085870312156200377157600080fd5b6200377c856200327a565b935060208501356200378e8162003252565b92506040850135620037a08162003252565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037cc57600080fd5b620037d7886200327a565b96506020880135620037e98162003252565b9550604088013567ffffffffffffffff808211156200380757600080fd5b620038158b838c016200328f565b909750955060608a01359150808211156200382f57600080fd5b506200383e8a828b016200328f565b9094509250506080880135620038548162003552565b8091505092959891949750929550565b6000806000606084860312156200387a57600080fd5b62003885846200327a565b92506020840135620038978162003252565b9150604084013567ffffffffffffffff811115620038b457600080fd5b620038c28682870162003617565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003961577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200399a576200399a620038fb565b5060010190565b60005b83811015620039be578181015183820152602001620039a4565b83811115620030185750506000910152565b60008151808452620039ea816020860160208601620039a1565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a2e6060830184620039d0565b95945050505050565b6000825162003a4b818460208701620039a1565b9190910192915050565b600082601f83011262003a6757600080fd5b815162003a786200363a82620035ec565b81815284602083860101111562003a8e57600080fd5b62000b86826020830160208701620039a1565b60008060006060848603121562003ab757600080fd5b835167ffffffffffffffff8082111562003ad057600080fd5b62003ade8783880162003a55565b9450602086015191508082111562003af557600080fd5b5062003b048682870162003a55565b925050604084015162003b178162003552565b809150509250925092565b60608152600062003b376060830186620039d0565b828103602084015262003b4b8186620039d0565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003b8157600080fd5b8151620033dc8162003b5f565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bcf60608301878962003b8e565b828103602084015262003be481868862003b8e565b91505060ff831660408301529695505050505050565b6000835162003c0e818460208801620039a1565b83519083019062003c24818360208801620039a1565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003c8082850187620039d0565b925080851660e085015250509998505050505050505050565b60006020828403121562003cac57600080fd5b815167ffffffffffffffff81111562003cc457600080fd5b62000b868482850162003a55565b60006020828403121562003ce557600080fd5b8151620033dc8162003552565b60006020828403121562003d0557600080fd5b5051919050565b60008282101562003d215762003d21620038fb565b500390565b600181815b8085111562003d8557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d695762003d69620038fb565b8085161562003d7757918102915b93841c939080029062003d2b565b509250929050565b60008262003d9e5750600162000943565b8162003dad5750600062000943565b816001811462003dc6576002811462003dd15762003df1565b600191505062000943565b60ff84111562003de55762003de5620038fb565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e16575081810a62000943565b62003e22838362003d26565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e575762003e57620038fb565b029392505050565b6000620033dc838362003d8d565b6000821982111562003e835762003e83620038fb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003ec857600080fd5b8386111562003ed657600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003eff57600080fd5b873562003f0c8162003252565b9650602088013562003f1e8162003252565b955060408801359450606088013593506080880135620035cf8162003552565b600080600080600080600080610100898b03121562003f5c57600080fd5b883562003f698162003252565b9750602089013562003f7b8162003252565b96506040890135955060608901359450608089013562003f9b8162003b5f565b935060a089013562003fad8162003552565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620033dc6020830184620039d056fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212208ab6fb3903678943dce239f2d5af5eb41bb3f9557f221a30c64e308f374fa28464736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b62000215366004620032db565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac36600462003368565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033a4565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033be565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c366004620033e3565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d3366004620034e4565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003562565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003673565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe3660046200375a565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003673565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033a4565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037b0565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c36600462003864565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033a4565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033a4565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b62000739366004620033e3565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038cc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e6002846200392a565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a9062003966565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038cc565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038cc565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b686002836200392a565b91508062000b768162003966565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b908790602401620039fe565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a37565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b620025f3565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c4600062002678565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a37565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b0386168484620026e2565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003aa1565b925092509250600085848484604051620012dc9062003244565b620012ea9392919062003b22565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b6e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b6e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620016619062003244565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bb9565b60408051601f1981840301815290829052620016ae929160200162003bfa565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c2d565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b9062002792565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028f1565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b888162002678565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b6e565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029a0565b62001e576001600160a01b038b1633308a62002fc5565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003c99565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003c99565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cd2565b60405160200162001fba9392919062003b22565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c2d565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b89062002792565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003cf2565b90508015801590620023c55750608d54620023c2824262003d0c565b10155b620024395760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024bb5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d4575088620024d7565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a5908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301e565b505050565b806001620027a36020600262003e5f565b620027af919062003d0c565b60215410620028275760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283c919062003e6d565b909155505060215460005b6020811015620028e657816001166001036200287c578260018260208110620028745762002874620038cc565b015550505050565b60018160208110620028925762002892620038cc565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cf91906200392a565b915080620028dd8162003966565b91505062002847565b506200278d62003e88565b60225460ff166200296b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310a92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce557600080808080808062002a46896004818d62003eb7565b81019062002a55919062003ee3565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aec5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6c5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be35760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c91919062003a37565b6000604051808303816000865af19150503d806000811462002cd0576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd5565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d785760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d908a6004818e62003eb7565b81019062002d9f919062003f3e565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e385760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb85760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6f919062003a37565b6000604051808303816000865af19150503d806000811462002fae576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb3565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030189085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002728565b50505050565b600062003075826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031119092919063ffffffff16565b8051909150156200278d578080602001905181019062003096919062003b6e565b6200278d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b031685876040516200313b919062003a37565b60006040518083038185875af1925050503d80600081146200317a576040519150601f19603f3d011682016040523d82523d6000602084013e6200317f565b606091505b509150915062003192878383876200319d565b979650505050505050565b606083156200321157825160000362003209576001600160a01b0385163b620032095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b868383815115620032285781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003fca565b6119c78062003fe083390190565b6001600160a01b038116811462001b8857600080fd5b8035620032758162003252565b919050565b803563ffffffff811681146200327557600080fd5b60008083601f840112620032a257600080fd5b50813567ffffffffffffffff811115620032bb57600080fd5b602083019150836020828501011115620032d457600080fd5b9250929050565b60008060008060008060a08789031215620032f557600080fd5b8635620033028162003252565b955062003312602088016200327a565b94506040870135620033248162003252565b935060608701359250608087013567ffffffffffffffff8111156200334857600080fd5b6200335689828a016200328f565b979a9699509497509295939492505050565b600080604083850312156200337c57600080fd5b62003387836200327a565b91506020830135620033998162003252565b809150509250929050565b600060208284031215620033b757600080fd5b5035919050565b600060208284031215620033d157600080fd5b620033dc826200327a565b9392505050565b600060208284031215620033f657600080fd5b8135620033dc8162003252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200345e576200345e62003403565b604052919050565b600082601f8301126200347857600080fd5b8135602067ffffffffffffffff82111562003497576200349762003403565b8160051b620034a882820162003432565b9283528481018201928281019087851115620034c357600080fd5b83870192505b848310156200319257823582529183019190830190620034c9565b60008060008060808587031215620034fb57600080fd5b84359350602085013567ffffffffffffffff808211156200351b57600080fd5b620035298883890162003466565b94506040870135915080821682146200354157600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a0312156200357e57600080fd5b87356200358b8162003552565b96506200359b602089016200327a565b95506040880135620035ad8162003252565b9450620035bd606089016200327a565b93506080880135620035cf8162003252565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003609576200360962003403565b50601f01601f191660200190565b600082601f8301126200362957600080fd5b8135620036406200363a82620035ec565b62003432565b8181528460208386010111156200365657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200369457600080fd5b8a3567ffffffffffffffff80821115620036ad57600080fd5b620036bb8e838f0162003466565b9b50620036cb60208e016200327a565b9a5060408d0135995060608d01359850620036e960808e016200327a565b9750620036f960a08e0162003268565b96506200370960c08e016200327a565b95506200371960e08e0162003268565b94506101008d013593506101208d01359150808211156200373957600080fd5b50620037488d828e0162003617565b9150509295989b9194979a5092959850565b600080600080608085870312156200377157600080fd5b6200377c856200327a565b935060208501356200378e8162003252565b92506040850135620037a08162003252565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037cc57600080fd5b620037d7886200327a565b96506020880135620037e98162003252565b9550604088013567ffffffffffffffff808211156200380757600080fd5b620038158b838c016200328f565b909750955060608a01359150808211156200382f57600080fd5b506200383e8a828b016200328f565b9094509250506080880135620038548162003552565b8091505092959891949750929550565b6000806000606084860312156200387a57600080fd5b62003885846200327a565b92506020840135620038978162003252565b9150604084013567ffffffffffffffff811115620038b457600080fd5b620038c28682870162003617565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003961577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200399a576200399a620038fb565b5060010190565b60005b83811015620039be578181015183820152602001620039a4565b83811115620030185750506000910152565b60008151808452620039ea816020860160208601620039a1565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a2e6060830184620039d0565b95945050505050565b6000825162003a4b818460208701620039a1565b9190910192915050565b600082601f83011262003a6757600080fd5b815162003a786200363a82620035ec565b81815284602083860101111562003a8e57600080fd5b62000b86826020830160208701620039a1565b60008060006060848603121562003ab757600080fd5b835167ffffffffffffffff8082111562003ad057600080fd5b62003ade8783880162003a55565b9450602086015191508082111562003af557600080fd5b5062003b048682870162003a55565b925050604084015162003b178162003552565b809150509250925092565b60608152600062003b376060830186620039d0565b828103602084015262003b4b8186620039d0565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003b8157600080fd5b8151620033dc8162003b5f565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bcf60608301878962003b8e565b828103602084015262003be481868862003b8e565b91505060ff831660408301529695505050505050565b6000835162003c0e818460208801620039a1565b83519083019062003c24818360208801620039a1565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003c8082850187620039d0565b925080851660e085015250509998505050505050505050565b60006020828403121562003cac57600080fd5b815167ffffffffffffffff81111562003cc457600080fd5b62000b868482850162003a55565b60006020828403121562003ce557600080fd5b8151620033dc8162003552565b60006020828403121562003d0557600080fd5b5051919050565b60008282101562003d215762003d21620038fb565b500390565b600181815b8085111562003d8557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d695762003d69620038fb565b8085161562003d7757918102915b93841c939080029062003d2b565b509250929050565b60008262003d9e5750600162000943565b8162003dad5750600062000943565b816001811462003dc6576002811462003dd15762003df1565b600191505062000943565b60ff84111562003de55762003de5620038fb565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e16575081810a62000943565b62003e22838362003d26565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e575762003e57620038fb565b029392505050565b6000620033dc838362003d8d565b6000821982111562003e835762003e83620038fb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003ec857600080fd5b8386111562003ed657600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003eff57600080fd5b873562003f0c8162003252565b9650602088013562003f1e8162003252565b955060408801359450606088013593506080880135620035cf8162003552565b600080600080600080600080610100898b03121562003f5c57600080fd5b883562003f698162003252565b9750602089013562003f7b8162003252565b96506040890135955060608901359450608089013562003f9b8162003b5f565b935060a089013562003fad8162003552565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620033dc6020830184620039d056fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a26469706673582212208ab6fb3903678943dce239f2d5af5eb41bb3f9557f221a30c64e308f374fa28464736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b50615a02806100206000396000f3fe608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b6200021536600462003301565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac3660046200338e565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033ca565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033e4565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c36600462003409565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d33660046200350a565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003588565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003699565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe36600462003780565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003699565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033ca565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037d6565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c3660046200388a565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033ca565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033ca565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b6200073936600462003409565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038f2565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e60028462003950565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a906200398c565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038f2565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038f2565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b6860028362003950565b91508062000b76816200398c565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b90879060240162003a24565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a5d565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b62002619565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c460006200269e565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a5d565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b038616848462002708565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003ac7565b925092509250600085848484604051620012dc906200326a565b620012ea9392919062003b48565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b94565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b94565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001661906200326a565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bdf565b60408051601f1981840301815290829052620016ae929160200162003c20565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c53565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b90620027b8565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002917565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b88816200269e565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b94565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029c6565b62001e576001600160a01b038b1633308a62002feb565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003cbf565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003cbf565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cf8565b60405160200162001fba9392919062003b48565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c53565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b890620027b8565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003d18565b90508015801590620023c55750608d54620023c2824262003d32565b10155b6200245f5760405162461bcd60e51b815260206004820152604260248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49445f4f525f4e4f545f5945545f434c41494d414260648201527f4c45000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff878116911614620024e15760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024fa575088620024fd565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025cb908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027b39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003044565b505050565b806001620027c96020600262003e85565b620027d5919062003d32565b602154106200284d5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b60016021600082825462002862919062003e93565b909155505060215460005b60208110156200290c5781600116600103620028a25782600182602081106200289a576200289a620038f2565b015550505050565b60018160208110620028b857620028b8620038f2565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028f5919062003950565b91508062002903816200398c565b9150506200286d565b50620027b362003eae565b60225460ff16620029915760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600062002a0983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200313092505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002d0b57600080808080808062002a6c896004818d62003edd565b81019062002a7b919062003f09565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002b125760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b925760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002c095760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002cb7919062003a5d565b6000604051808303816000865af19150503d806000811462002cf6576040519150601f19603f3d011682016040523d82523d6000602084013e62002cfb565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d9e5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002db68a6004818e62003edd565b81019062002dc5919062003f64565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e5e5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002ede5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f95919062003a5d565b6000604051808303816000865af19150503d806000811462002fd4576040519150601f19603f3d011682016040523d82523d6000602084013e62002fd9565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200303e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016200274e565b50505050565b60006200309b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031379092919063ffffffff16565b805190915015620027b35780806020019051810190620030bc919062003b94565b620027b35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b0316858760405162003161919062003a5d565b60006040518083038185875af1925050503d8060008114620031a0576040519150601f19603f3d011682016040523d82523d6000602084013e620031a5565b606091505b5091509150620031b887838387620031c3565b979650505050505050565b60608315620032375782516000036200322f576001600160a01b0385163b6200322f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b8683838151156200324e5781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003ff0565b6119c7806200400683390190565b6001600160a01b038116811462001b8857600080fd5b80356200329b8162003278565b919050565b803563ffffffff811681146200329b57600080fd5b60008083601f840112620032c857600080fd5b50813567ffffffffffffffff811115620032e157600080fd5b602083019150836020828501011115620032fa57600080fd5b9250929050565b60008060008060008060a087890312156200331b57600080fd5b8635620033288162003278565b95506200333860208801620032a0565b945060408701356200334a8162003278565b935060608701359250608087013567ffffffffffffffff8111156200336e57600080fd5b6200337c89828a01620032b5565b979a9699509497509295939492505050565b60008060408385031215620033a257600080fd5b620033ad83620032a0565b91506020830135620033bf8162003278565b809150509250929050565b600060208284031215620033dd57600080fd5b5035919050565b600060208284031215620033f757600080fd5b6200340282620032a0565b9392505050565b6000602082840312156200341c57600080fd5b8135620034028162003278565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003484576200348462003429565b604052919050565b600082601f8301126200349e57600080fd5b8135602067ffffffffffffffff821115620034bd57620034bd62003429565b8160051b620034ce82820162003458565b9283528481018201928281019087851115620034e957600080fd5b83870192505b84831015620031b857823582529183019190830190620034ef565b600080600080608085870312156200352157600080fd5b84359350602085013567ffffffffffffffff808211156200354157600080fd5b6200354f888389016200348c565b94506040870135915080821682146200356757600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a031215620035a457600080fd5b8735620035b18162003578565b9650620035c160208901620032a0565b95506040880135620035d38162003278565b9450620035e360608901620032a0565b93506080880135620035f58162003278565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200362f576200362f62003429565b50601f01601f191660200190565b600082601f8301126200364f57600080fd5b813562003666620036608262003612565b62003458565b8181528460208386010111156200367c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620036ba57600080fd5b8a3567ffffffffffffffff80821115620036d357600080fd5b620036e18e838f016200348c565b9b50620036f160208e01620032a0565b9a5060408d0135995060608d013598506200370f60808e01620032a0565b97506200371f60a08e016200328e565b96506200372f60c08e01620032a0565b95506200373f60e08e016200328e565b94506101008d013593506101208d01359150808211156200375f57600080fd5b506200376e8d828e016200363d565b9150509295989b9194979a5092959850565b600080600080608085870312156200379757600080fd5b620037a285620032a0565b93506020850135620037b48162003278565b92506040850135620037c68162003278565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037f257600080fd5b620037fd88620032a0565b965060208801356200380f8162003278565b9550604088013567ffffffffffffffff808211156200382d57600080fd5b6200383b8b838c01620032b5565b909750955060608a01359150808211156200385557600080fd5b50620038648a828b01620032b5565b90945092505060808801356200387a8162003578565b8091505092959891949750929550565b600080600060608486031215620038a057600080fd5b620038ab84620032a0565b92506020840135620038bd8162003278565b9150604084013567ffffffffffffffff811115620038da57600080fd5b620038e8868287016200363d565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c057620039c062003921565b5060010190565b60005b83811015620039e4578181015183820152602001620039ca565b838111156200303e5750506000910152565b6000815180845262003a10816020860160208601620039c7565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a546060830184620039f6565b95945050505050565b6000825162003a71818460208701620039c7565b9190910192915050565b600082601f83011262003a8d57600080fd5b815162003a9e620036608262003612565b81815284602083860101111562003ab457600080fd5b62000b86826020830160208701620039c7565b60008060006060848603121562003add57600080fd5b835167ffffffffffffffff8082111562003af657600080fd5b62003b048783880162003a7b565b9450602086015191508082111562003b1b57600080fd5b5062003b2a8682870162003a7b565b925050604084015162003b3d8162003578565b809150509250925092565b60608152600062003b5d6060830186620039f6565b828103602084015262003b718186620039f6565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003ba757600080fd5b8151620034028162003b85565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bf560608301878962003bb4565b828103602084015262003c0a81868862003bb4565b91505060ff831660408301529695505050505050565b6000835162003c34818460208801620039c7565b83519083019062003c4a818360208801620039c7565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003ca682850187620039f6565b925080851660e085015250509998505050505050505050565b60006020828403121562003cd257600080fd5b815167ffffffffffffffff81111562003cea57600080fd5b62000b868482850162003a7b565b60006020828403121562003d0b57600080fd5b8151620034028162003578565b60006020828403121562003d2b57600080fd5b5051919050565b60008282101562003d475762003d4762003921565b500390565b600181815b8085111562003dab57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d8f5762003d8f62003921565b8085161562003d9d57918102915b93841c939080029062003d51565b509250929050565b60008262003dc45750600162000943565b8162003dd35750600062000943565b816001811462003dec576002811462003df75762003e17565b600191505062000943565b60ff84111562003e0b5762003e0b62003921565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e3c575081810a62000943565b62003e48838362003d4c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e7d5762003e7d62003921565b029392505050565b600062003402838362003db3565b6000821982111562003ea95762003ea962003921565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003eee57600080fd5b8386111562003efc57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003f2557600080fd5b873562003f328162003278565b9650602088013562003f448162003278565b955060408801359450606088013593506080880135620035f58162003578565b600080600080600080600080610100898b03121562003f8257600080fd5b883562003f8f8162003278565b9750602089013562003fa18162003278565b96506040890135955060608901359450608089013562003fc18162003b85565b935060a089013562003fd38162003578565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620034026020830184620039f656fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a2646970667358221220e63c82aeb9c625edac6379067d61515cfcb4e7d919995ea9f008f310c81c9e0d64736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b6200021536600462003301565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac3660046200338e565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033ca565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033e4565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c36600462003409565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d33660046200350a565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003588565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003699565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe36600462003780565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003699565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033ca565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037d6565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c3660046200388a565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033ca565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033ca565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b6200073936600462003409565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038f2565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e60028462003950565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a906200398c565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038f2565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038f2565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b6860028362003950565b91508062000b76816200398c565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b90879060240162003a24565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a5d565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b62002619565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c460006200269e565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a5d565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b038616848462002708565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003ac7565b925092509250600085848484604051620012dc906200326a565b620012ea9392919062003b48565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b94565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b94565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001661906200326a565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bdf565b60408051601f1981840301815290829052620016ae929160200162003c20565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c53565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b90620027b8565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002917565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b88816200269e565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b94565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029c6565b62001e576001600160a01b038b1633308a62002feb565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003cbf565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003cbf565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cf8565b60405160200162001fba9392919062003b48565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c53565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b890620027b8565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003d18565b90508015801590620023c55750608d54620023c2824262003d32565b10155b6200245f5760405162461bcd60e51b815260206004820152604260248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49445f4f525f4e4f545f5945545f434c41494d414260648201527f4c45000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff878116911614620024e15760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024fa575088620024fd565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025cb908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027b39084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003044565b505050565b806001620027c96020600262003e85565b620027d5919062003d32565b602154106200284d5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b60016021600082825462002862919062003e93565b909155505060215460005b60208110156200290c5781600116600103620028a25782600182602081106200289a576200289a620038f2565b015550505050565b60018160208110620028b857620028b8620038f2565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028f5919062003950565b91508062002903816200398c565b9150506200286d565b50620027b362003eae565b60225460ff16620029915760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600062002a0983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200313092505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002d0b57600080808080808062002a6c896004818d62003edd565b81019062002a7b919062003f09565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002b125760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b925760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002c095760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002cb7919062003a5d565b6000604051808303816000865af19150503d806000811462002cf6576040519150601f19603f3d011682016040523d82523d6000602084013e62002cfb565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d9e5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002db68a6004818e62003edd565b81019062002dc5919062003f64565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e5e5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002ede5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f95919062003a5d565b6000604051808303816000865af19150503d806000811462002fd4576040519150601f19603f3d011682016040523d82523d6000602084013e62002fd9565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200303e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016200274e565b50505050565b60006200309b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031379092919063ffffffff16565b805190915015620027b35780806020019051810190620030bc919062003b94565b620027b35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b0316858760405162003161919062003a5d565b60006040518083038185875af1925050503d8060008114620031a0576040519150601f19603f3d011682016040523d82523d6000602084013e620031a5565b606091505b5091509150620031b887838387620031c3565b979650505050505050565b60608315620032375782516000036200322f576001600160a01b0385163b6200322f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b8683838151156200324e5781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003ff0565b6119c7806200400683390190565b6001600160a01b038116811462001b8857600080fd5b80356200329b8162003278565b919050565b803563ffffffff811681146200329b57600080fd5b60008083601f840112620032c857600080fd5b50813567ffffffffffffffff811115620032e157600080fd5b602083019150836020828501011115620032fa57600080fd5b9250929050565b60008060008060008060a087890312156200331b57600080fd5b8635620033288162003278565b95506200333860208801620032a0565b945060408701356200334a8162003278565b935060608701359250608087013567ffffffffffffffff8111156200336e57600080fd5b6200337c89828a01620032b5565b979a9699509497509295939492505050565b60008060408385031215620033a257600080fd5b620033ad83620032a0565b91506020830135620033bf8162003278565b809150509250929050565b600060208284031215620033dd57600080fd5b5035919050565b600060208284031215620033f757600080fd5b6200340282620032a0565b9392505050565b6000602082840312156200341c57600080fd5b8135620034028162003278565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003484576200348462003429565b604052919050565b600082601f8301126200349e57600080fd5b8135602067ffffffffffffffff821115620034bd57620034bd62003429565b8160051b620034ce82820162003458565b9283528481018201928281019087851115620034e957600080fd5b83870192505b84831015620031b857823582529183019190830190620034ef565b600080600080608085870312156200352157600080fd5b84359350602085013567ffffffffffffffff808211156200354157600080fd5b6200354f888389016200348c565b94506040870135915080821682146200356757600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a031215620035a457600080fd5b8735620035b18162003578565b9650620035c160208901620032a0565b95506040880135620035d38162003278565b9450620035e360608901620032a0565b93506080880135620035f58162003278565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200362f576200362f62003429565b50601f01601f191660200190565b600082601f8301126200364f57600080fd5b813562003666620036608262003612565b62003458565b8181528460208386010111156200367c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620036ba57600080fd5b8a3567ffffffffffffffff80821115620036d357600080fd5b620036e18e838f016200348c565b9b50620036f160208e01620032a0565b9a5060408d0135995060608d013598506200370f60808e01620032a0565b97506200371f60a08e016200328e565b96506200372f60c08e01620032a0565b95506200373f60e08e016200328e565b94506101008d013593506101208d01359150808211156200375f57600080fd5b506200376e8d828e016200363d565b9150509295989b9194979a5092959850565b600080600080608085870312156200379757600080fd5b620037a285620032a0565b93506020850135620037b48162003278565b92506040850135620037c68162003278565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037f257600080fd5b620037fd88620032a0565b965060208801356200380f8162003278565b9550604088013567ffffffffffffffff808211156200382d57600080fd5b6200383b8b838c01620032b5565b909750955060608a01359150808211156200385557600080fd5b50620038648a828b01620032b5565b90945092505060808801356200387a8162003578565b8091505092959891949750929550565b600080600060608486031215620038a057600080fd5b620038ab84620032a0565b92506020840135620038bd8162003278565b9150604084013567ffffffffffffffff811115620038da57600080fd5b620038e8868287016200363d565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c057620039c062003921565b5060010190565b60005b83811015620039e4578181015183820152602001620039ca565b838111156200303e5750506000910152565b6000815180845262003a10816020860160208601620039c7565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a546060830184620039f6565b95945050505050565b6000825162003a71818460208701620039c7565b9190910192915050565b600082601f83011262003a8d57600080fd5b815162003a9e620036608262003612565b81815284602083860101111562003ab457600080fd5b62000b86826020830160208701620039c7565b60008060006060848603121562003add57600080fd5b835167ffffffffffffffff8082111562003af657600080fd5b62003b048783880162003a7b565b9450602086015191508082111562003b1b57600080fd5b5062003b2a8682870162003a7b565b925050604084015162003b3d8162003578565b809150509250925092565b60608152600062003b5d6060830186620039f6565b828103602084015262003b718186620039f6565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003ba757600080fd5b8151620034028162003b85565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bf560608301878962003bb4565b828103602084015262003c0a81868862003bb4565b91505060ff831660408301529695505050505050565b6000835162003c34818460208801620039c7565b83519083019062003c4a818360208801620039c7565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003ca682850187620039f6565b925080851660e085015250509998505050505050505050565b60006020828403121562003cd257600080fd5b815167ffffffffffffffff81111562003cea57600080fd5b62000b868482850162003a7b565b60006020828403121562003d0b57600080fd5b8151620034028162003578565b60006020828403121562003d2b57600080fd5b5051919050565b60008282101562003d475762003d4762003921565b500390565b600181815b8085111562003dab57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d8f5762003d8f62003921565b8085161562003d9d57918102915b93841c939080029062003d51565b509250929050565b60008262003dc45750600162000943565b8162003dd35750600062000943565b816001811462003dec576002811462003df75762003e17565b600191505062000943565b60ff84111562003e0b5762003e0b62003921565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e3c575081810a62000943565b62003e48838362003d4c565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e7d5762003e7d62003921565b029392505050565b600062003402838362003db3565b6000821982111562003ea95762003ea962003921565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003eee57600080fd5b8386111562003efc57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003f2557600080fd5b873562003f328162003278565b9650602088013562003f448162003278565b955060408801359450606088013593506080880135620035f58162003578565b600080600080600080600080610100898b03121562003f8257600080fd5b883562003f8f8162003278565b9750602089013562003fa18162003278565b96506040890135955060608901359450608089013562003fc18162003b85565b935060a089013562003fd38162003578565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620034026020830184620039f656fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a2646970667358221220e63c82aeb9c625edac6379067d61515cfcb4e7d919995ea9f008f310c81c9e0d64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ProofOfEfficiency.json b/compiled-contracts/ProofOfEfficiency.json index 6a8b74565..f7f531e43 100644 --- a/compiled-contracts/ProofOfEfficiency.json +++ b/compiled-contracts/ProofOfEfficiency.json @@ -896,8 +896,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061494a806100206000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea2646970667358221220e060d003a6df3b282d02b727e8541fe86ad6aa5154fa08bedc64fae66b56376464736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea2646970667358221220e060d003a6df3b282d02b727e8541fe86ad6aa5154fa08bedc64fae66b56376464736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5061494a806100206000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea2646970667358221220515451c0c1677c209ae6a20bafd437788cca076cb2ea51a63d02a471ee2f757764736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea2646970667358221220515451c0c1677c209ae6a20bafd437788cca076cb2ea51a63d02a471ee2f757764736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ProofOfEfficiencyMock.json b/compiled-contracts/ProofOfEfficiencyMock.json index 519f6574a..43afc74d1 100644 --- a/compiled-contracts/ProofOfEfficiencyMock.json +++ b/compiled-contracts/ProofOfEfficiencyMock.json @@ -1100,8 +1100,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506151f8806100206000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea2646970667358221220e47ec43ae2df60b03bfa2f67ac0b6ab9290b8e567855ca9b4612d3496ef4271664736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea2646970667358221220e47ec43ae2df60b03bfa2f67ac0b6ab9290b8e567855ca9b4612d3496ef4271664736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506151f8806100206000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea26469706673582212206e111003f6bc21779ab20dd8da4b7e3ffaa2d3c12921bb3c57a89659abd5c04564736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea26469706673582212206e111003f6bc21779ab20dd8da4b7e3ffaa2d3c12921bb3c57a89659abd5c04564736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/Bridge.sol b/contracts/Bridge.sol index 73c8f5689..19274678f 100644 --- a/contracts/Bridge.sol +++ b/contracts/Bridge.sol @@ -562,7 +562,7 @@ contract Bridge is require( timestampGlobalExitRoot != 0 && (block.timestamp - timestampGlobalExitRoot) >= claimTimeout, - "Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID" + "Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID_OR_NOT_YET_CLAIMABLE" ); // Destination network must be networkID diff --git a/contracts/ProofOfEfficiency.sol b/contracts/ProofOfEfficiency.sol index 93624c92e..8c43cd29e 100644 --- a/contracts/ProofOfEfficiency.sol +++ b/contracts/ProofOfEfficiency.sol @@ -621,7 +621,7 @@ contract ProofOfEfficiency is } /** - * @notice Allows to stop the zk-evm if its possible to prove a different state root give the same batches. + * @notice Allows to halt the PoE if its possible to prove a different state root given the same batches * @param initNumBatch Batch which the aggregator starts the verification * @param finalNewBatch Last batch aggregator intends to verify * @param newLocalExitRoot New local exit root once the batch is processed diff --git a/docs/ProofOfEfficiency.md b/docs/ProofOfEfficiency.md index 94af6d4ad..071a0b023 100644 --- a/docs/ProofOfEfficiency.md +++ b/docs/ProofOfEfficiency.md @@ -179,7 +179,7 @@ Allow the current security council to set a new security council address uint256[2] proofC ) public ``` -Allows to stop the zk-evm if its possible to prove a different state root give the same batches. +Allows to halt the PoE if its possible to prove a different state root given the same batches #### Parameters: diff --git a/test/contracts/bridge.test.js b/test/contracts/bridge.test.js index 421d29d14..c663cc3e4 100644 --- a/test/contracts/bridge.test.js +++ b/test/contracts/bridge.test.js @@ -741,7 +741,7 @@ describe('Bridge Contract', () => { metadata, )).to.be.revertedWith('Bridge::_verifyLeaf: DESTINATION_NETWORK_DOES_NOT_MATCH'); - // Check GLOBAL_EXIT_ROOT_INVALID assert + // Check GLOBAL_EXIT_ROOT_INVALID_OR_NOT_YET_CLAIMABLE assert await expect(bridgeContract.claimAsset( proof, index, @@ -753,7 +753,7 @@ describe('Bridge Contract', () => { destinationAddress, amount, metadata, - )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID'); + )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID_OR_NOT_YET_CLAIMABLE'); // Check SMT_INVALID assert await expect(bridgeContract.claimAsset( @@ -1228,7 +1228,7 @@ describe('Bridge Contract', () => { destinationAddress, amount, metadata, - )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID'); + )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID_OR_NOT_YET_CLAIMABLE'); // Can't claim because claim timeout does not expired yet ( edge case) await ethers.provider.send('evm_setNextBlockTimestamp', [(globalExitRootTimestamp.toNumber() + newClaimTimeout) - 1]); @@ -1243,7 +1243,7 @@ describe('Bridge Contract', () => { destinationAddress, amount, metadata, - )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID'); + )).to.be.revertedWith('Bridge::_verifyLeaf: GLOBAL_EXIT_ROOT_INVALID_OR_NOT_YET_CLAIMABLE'); // Now can claim! await expect(bridgeContract.claimAsset(