@ensuro/account-abstraction 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1394,8 +1394,8 @@
|
|
|
1394
1394
|
"type": "receive"
|
|
1395
1395
|
}
|
|
1396
1396
|
],
|
|
1397
|
-
"bytecode": "0x60a06040523480156200001157600080fd5b50604051620064853803806200648583398181016040528101906200003791906200084d565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f0813ada2000000000000000000000000000000000000000000000000000000008152600401620000a49190620008a5565b60405180910390fd5b620000c36000826000806200010160201b60201c565b50508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000af3565b600067ffffffffffffffff80168567ffffffffffffffff16036200015e57846040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401620001559190620008e7565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff161490506000811562000330578463ffffffff1662000209620004ed60201b60201c565b62000215919062000945565b905060405180604001604052808265ffffffffffff168152602001620002478663ffffffff166200050560201b60201c565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555090505062000481565b620003dc846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166200051560201b9092919060201c565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051620004d893929190620009d5565b60405180910390a38192505050949350505050565b60006200050042620005cd60201b60201c565b905090565b60008163ffffffff169050919050565b60008060006200053b866dffffffffffffffffffffffffffff166200062a60201b60201c565b90506000620005878563ffffffff168763ffffffff168463ffffffff16116200056657600062000575565b878462000574919062000a12565b5b63ffffffff166200065b60201b60201c565b90508063ffffffff16620005a0620004ed60201b60201c565b620005ac919062000945565b9250620005c18287856200067660201b60201c565b93505050935093915050565b600065ffffffffffff801682111562000622576030826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016200061992919062000ac6565b60405180910390fd5b819050919050565b6000806200064e836dffffffffffffffffffffffffffff16620006c260201b60201c565b5050905080915050919050565b60008183116200066c57816200066e565b825b905092915050565b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000620006e884620006dc620004ed60201b60201c565b620006f560201b60201c565b9250925092509193909250565b6000806000806000806200071f886dffffffffffffffffffffffffffff166200075c60201b60201c565b9250925092508665ffffffffffff168165ffffffffffff16111562000747578282826200074c565b816000805b9550955095505050509250925092565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d082620007a3565b9050919050565b6000620007e482620007c3565b9050919050565b620007f681620007d7565b81146200080257600080fd5b50565b6000815190506200081681620007eb565b92915050565b6200082781620007c3565b81146200083357600080fd5b50565b60008151905062000847816200081c565b92915050565b600080604083850312156200086757620008666200079e565b5b6000620008778582860162000805565b92505060206200088a8582860162000836565b9150509250929050565b6200089f81620007c3565b82525050565b6000602082019050620008bc600083018462000894565b92915050565b600067ffffffffffffffff82169050919050565b620008e181620008c2565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b600065ffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009528262000904565b91506200095f8362000904565b9250828201905065ffffffffffff81111562000980576200097f62000916565b5b92915050565b600063ffffffff82169050919050565b620009a18162000986565b82525050565b620009b28162000904565b82525050565b60008115159050919050565b620009cf81620009b8565b82525050565b6000606082019050620009ec600083018662000996565b620009fb6020830185620009a7565b62000a0a6040830184620009c4565b949350505050565b600062000a1f8262000986565b915062000a2c8362000986565b9250828203905063ffffffff81111562000a4b5762000a4a62000916565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600062000a9362000a8d62000a878462000a51565b62000a68565b62000a5b565b9050919050565b62000aa58162000a72565b82525050565b6000819050919050565b62000ac08162000aab565b82525050565b600060408201905062000add600083018562000a9a565b62000aec602083018462000ab5565b9392505050565b60805161597662000b0f600039600061158501526159766000f3fe6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906140fc565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b9190614170565b610a15565b60405161029d91906141ac565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190614170565b610a5d565b6040516102da91906141e6565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190614239565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e9190614279565b610ad9565b005b34801561034157600080fd5b5061035c6004803603810190610357919061434a565b610b50565b60405161036991906143c8565b60405180910390f35b61038c60048036038101906103879190614439565b610b83565b60405161039991906141e6565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906144c5565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190614518565b610cf8565b6040516104029493929190614579565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d91906145be565b610dcf565b005b34801561044057600080fd5b5061045b600480360381019061045691906145fe565b610de5565b604051610468919061462b565b60405180910390f35b34801561047d57600080fd5b50610486610e31565b60405161049391906141ac565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906145fe565b610e3d565b6040516104d091906141e6565b60405180910390f35b3480156104e557600080fd5b506104ee610e6d565b6040516104fb91906141e6565b60405180910390f35b61050c610e78565b005b34801561051a57600080fd5b5061053560048036038101906105309190614646565b610eed565b60405161054291906141e6565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d91906146b1565b610f6a565b005b34801561058057600080fd5b5061059b600480360381019061059691906145be565b610ffd565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614170565b611013565b6040516105d191906141ac565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190614749565b61105b565b60405161060e91906141ac565b60405180910390f35b34801561062357600080fd5b5061062c61110a565b60405161063991906141ac565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906147df565b61110f565b005b34801561067757600080fd5b50610692600480360381019061068d9190614439565b6111d8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190614646565b6112f6565b6040516106c8919061484e565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190614869565b61134e565b005b34801561070657600080fd5b50610721600480360381019061071c91906148a9565b611364565b60405161072e919061492c565b60405180910390f35b34801561074357600080fd5b5061075e6004803603810190610759919061499d565b61139d565b60405161076b9190614b3c565b60405180910390f35b34801561078057600080fd5b50610789611581565b6040516107969190614bbd565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614bd8565b6115a9565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614c4c565b611607565b6040516107fd929190614c9f565b60405180910390f35b34801561081257600080fd5b5061082d60048036038101906108289190614518565b6116b4565b005b34801561083b57600080fd5b506108446116cb565b60405161085191906143c8565b60405180910390f35b34801561086657600080fd5b5061086f611753565b60405161087c91906141e6565b60405180910390f35b34801561089157600080fd5b5061089a61175e565b6040516108a791906143c8565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190614518565b6117e9565b6040516108e5929190614c9f565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614cc8565b611866565b005b34801561092357600080fd5b5061093e600480360381019061093991906148a9565b61187c565b60405161094b91906141e6565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614d34565b611a6f565b604051610989929190614da8565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b49190614518565b611c53565b005b6109c3611cce565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614dd1565b5b90506020020160208101906109fd9190614e00565b84611d7b565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e90565b9050919050565b610acb611cce565b610ad58282611eb9565b5050565b610ae1611cce565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614e3c565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a611fd4565b610b64848461204b565b9050610b738460200135612277565b610b7c8261227a565b9392505050565b600080610b8e612316565b9050600080610b9f8388888861231e565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861239e565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614e66565b60405180910390fd5b6000610c1484898989611364565b90506000808363ffffffff16141580610c3e57506000610c3383610de5565b65ffffffffffff1614155b15610c4f57610c4c826123c7565b90505b60006003549050610c698a610c648b8b61239e565b61257d565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050346125b0565b50806003819055508196505050505050509392505050565b610cde611cce565b610cf28383610cec86610a5d565b8461267d565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450610db98160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a4e565b8094508195508296505050505092959194509250565b610dd7611cce565b610de18282612a71565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e1c81612b80565b610e265780610e29565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610e80611581565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610eb99190614e3c565b6000604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050565b6000610f636000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e90565b9050919050565b610f84610f75612316565b610f7d612bbc565b6001612bc9565b50610f8d611581565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b8152600401610fc7929190614eac565b600060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050505050565b611005611cce565b61100f8282612cc7565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611117611cce565b600067ffffffffffffffff168367ffffffffffffffff16148061114d575067ffffffffffffffff80168367ffffffffffffffff16145b1561118f57826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161118691906141ac565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a45083836040516111cb929190614f22565b60405180910390a2505050565b60006111e2612316565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190614f5b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112db57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016112d29190614e3c565b60405180910390fd5b6112ef6112ea85838686611364565b6123c7565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b611356611cce565b6113608282612dd6565b5050565b60008484848460405160200161137d9493929190614fc6565b604051602081830303815290604052805190602001209050949350505050565b606060006113a9612316565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144c576000366113e6612f4d565b60003690506113f59190615035565b90809261140493929190615073565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061149b565b600067ffffffffffffffff811115611467576114666150ae565b5b6040519080825280601f01601f1916602001820160405280156114995781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff8111156114ba576114b96150ae565b5b6040519080825280602002602001820160405280156114ed57816020015b60608152602001906001900390816114d85790505b50915060005b848490508110156115795761154e3086868481811061151557611514614dd1565b5b905060200281019061152791906150ec565b8560405160200161153a939291906151b0565b604051602081830303815290604052612f52565b83828151811061156157611560614dd1565b5b602002602001018190525080806001019150506114f3565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115b1611fd4565b6116008483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050856125b0565b5050505050565b600080611613846112f6565b1561162457600080915091506116ac565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361166c576116618484612fd6565b6000915091506116ac565b6000611678858561105b565b905060008061168783896117e9565b9150915081611698576000806116a4565b60008163ffffffff1614815b945094505050505b935093915050565b6116bc611cce565b6116c68282612fee565b505050565b60006116d5611581565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161170d9190614e3c565b602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e91906151eb565b905090565b600062069780905090565b6000611768611581565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117a3929190615277565b602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e491906151eb565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361181457600160009150915061185f565b6000806118218686610cf8565b50509150915060008265ffffffffffff161415801561185757506118436131da565b65ffffffffffff168265ffffffffffff1611155b819350935050505b9250929050565b61186e611cce565b61187882826131ea565b5050565b600080611887612316565b90506000611895858561239e565b905060006118a588888888611364565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361191c57806040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401611913919061492c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146119d657600061195c6000856117e9565b509050600061197c6119766119718b8761105b565b610a15565b866117e9565b5090508115801561198b575080155b156119d357848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016119ca94939291906152a0565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611a7c612316565b90506000611a8c8289898961231e565b91505060008163ffffffff16611aa06131da565b611aaa91906152e5565b905060008263ffffffff161480611ae4575060008665ffffffffffff16118015611ae357508065ffffffffffff168665ffffffffffff16105b5b15611b33578289611af58a8a61239e565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b2a93929190614e66565b60405180910390fd5b611b4d8665ffffffffffff168265ffffffffffff16613343565b9550611b5b838a8a8a611364565b9450611b668561335c565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611c3f95949392919061531f565b60405180910390a350505094509492505050565b611c5b612316565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cc98282612fee565b505050565b6000611cd8612316565b9050600080611cee83611ce9612bbc565b6133ee565b9150915081611d765760008163ffffffff1603611d5a576000611d17611d12612bbc565b6134dc565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611d5192919061536d565b60405180910390fd5b611d74611d6f8430611d6a612bbc565b611364565b6123c7565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611e839190615396565b60405180910390a3505050565b600080611eac836dffffffffffffffffffffffffffff16612a4e565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2957816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611f209190614e3c565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611fc8919061484e565b60405180910390a25050565b611fdc611581565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612049576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612040906153fd565b60405180910390fd5b565b60008083806060019061205e91906150ec565b60009060049261207093929190615073565b9061207b9190615435565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461211f57806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016121169190615396565b60405180910390fd5b600084806060019061213191906150ec565b60049060249261214393929190615073565b8101906121509190615494565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121b7576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121c2856138c4565b9050600061222382888061010001906121db91906150ec565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506138fa565b90506122408188806060019061223991906150ec565b6000612bc9565b612251576001945050505050612271565b61226a8188806060019061226591906150ec565b613926565b9450505050505b92915050565b50565b600081146123135760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516122ca906154e7565b600060405180830381858888f193505050503d8060008114612308576040519150601f19603f3d011682016040523d82523d6000602084013e61230d565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123685761235f8685856133ee565b91509150612395565b6004848490501061238c576123878686612382878761239e565b611607565b612390565b6000805b915091505b94509492505050565b600082826000906004926123b493929190615073565b906123bf9190615435565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361246d57836040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401612464919061492c565b60405180910390fd5b6124756131da565b65ffffffffffff168265ffffffffffff1611156124c957836040517f18cb6b7a0000000000000000000000000000000000000000000000000000000081526004016124c0919061492c565b60405180910390fd5b6124d282612b80565b1561251457836040517f78a5d6e400000000000000000000000000000000000000000000000000000000815260040161250b919061492c565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b600082826040516020016125929291906154fc565b60405160208183030381529060405280519060200120905092915050565b6060814710156125f757306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016125ee9190614e3c565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516126209190615525565b60006040518083038185875af1925050503d806000811461265d576040519150601f19603f3d011682016040523d82523d6000602084013e612662565b606091505b50915091506126728683836139d9565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff16036126d757846040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016126ce91906141ac565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612895578463ffffffff166127796131da565b61278391906152e5565b905060405180604001604052808265ffffffffffff1681526020016127ad8663ffffffff16613a68565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506129e4565b61293f846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612a399392919061553c565b60405180910390a38192505050949350505050565b6000806000612a6484612a5f6131da565b613b0a565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612aa7575067ffffffffffffffff80168267ffffffffffffffff16145b15612ae957816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612ae091906141ac565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612b8a6131da565b65ffffffffffff16612b9a610e6d565b63ffffffff1683612bab91906152e5565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612bf787308888600090600492612be793929190615073565b90612bf29190615435565b611607565b9150915081612cb85760008163ffffffff161115612c41576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612cad5786612c70308888600090600492612c6093929190615073565b90612c6b9190615435565b61105b565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612ca492919061536d565b60405180910390fd5b600092505050612cbf565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612cfd575067ffffffffffffffff80168267ffffffffffffffff16145b15612d3f57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612d3691906141ac565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612e2e57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612e2591906141ac565b60405180910390fd5b6000612ea082612e3c611753565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612f40929190615573565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612f7c9190615525565b600060405180830381855af49150503d8060008114612fb7576040519150601f19603f3d011682016040523d82523d6000602084013e612fbc565b606091505b5091509150612fcc8583836139d9565b9250505092915050565b6000612fe2838361257d565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361304857826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161303f91906141ac565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036130dd57600090506131d4565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006131e542613b67565b905090565b6000613273826131f8611753565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051613336929190615573565b60405180910390a2505050565b60008183116133525781613354565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff16141580156133a857506133a681612b80565b155b156133ea57816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016133e1919061492c565b60405180910390fd5b5050565b600080600484849050101561340957600080915091506134d4565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361345a5761344f3061344a868661239e565b612fd6565b6000915091506134d4565b600080600061346987876134dc565b9250925092508261348357600080945094505050506134d4565b600080613490848b6117e9565b91509150816134aa576000809650965050505050506134d4565b6134c08363ffffffff168263ffffffff16613343565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156134fd5760008060009250925092506138bd565b6000613509868661239e565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806135a257506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806135f15750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613640575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061368f575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156136a5576001600080935093509350506138bd565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061373c575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061378b57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137d557600086866004906024926137a693929190615073565b8101906137b39190615494565b905060006137c082610eed565b905060016000829550955095505050506138bd565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061386c575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156138b0576000868660049060249261388793929190615073565b8101906138949190614170565b905060016138a182611013565b600094509450945050506138bd565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b60008060008061390a8686613bc1565b92509250925061391a8282613c1d565b82935050505092915050565b600080600084846004906004888890506139409190615035565b9261394d93929190615073565b81019061395a919061568e565b9250509150600080613980888561397b600087613d8190919063ffffffff16565b611607565b915091508180613996575060008163ffffffff16145b156139b557816139a75760016139aa565b60005b9450505050506139d2565b6139c86139c3898686613de8565b6123c7565b5060009450505050505b9392505050565b6060826139ee576139e982613e1e565b613a60565b60008251148015613a16575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613a5857836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613a4f9190614e3c565b60405180910390fd5b819050613a61565b5b9392505050565b60008163ffffffff169050919050565b6000806000613a96866dffffffffffffffffffffffffffff16611e90565b90506000613ad68563ffffffff168763ffffffff168463ffffffff1611613abe576000613acb565b8784613aca91906156fd565b5b63ffffffff16613343565b90508063ffffffff16613ae76131da565b613af191906152e5565b9250613afe828785613e63565b93505050935093915050565b600080600080600080613b2c886dffffffffffffffffffffffffffff16613eaf565b9250925092508665ffffffffffff168165ffffffffffff161115613b5257828282613b57565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613bb9576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613bb092919061577d565b60405180910390fd5b819050919050565b60008060006041845103613c065760008060006020870151925060408701519150606087015160001a9050613bf888828585613ef1565b955095509550505050613c16565b60006002855160001b9250925092505b9250925092565b60006003811115613c3157613c306157a6565b5b826003811115613c4457613c436157a6565b5b0315613d7d5760016003811115613c5e57613c5d6157a6565b5b826003811115613c7157613c706157a6565b5b03613ca8576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613cbc57613cbb6157a6565b5b826003811115613ccf57613cce6157a6565b5b03613d14578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613d0b91906143c8565b60405180910390fd5b600380811115613d2757613d266157a6565b5b826003811115613d3a57613d396157a6565b5b03613d7c57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613d73919061492c565b60405180910390fd5b5b5050565b6000602082613d9091906157d5565b83511015613dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dca90615855565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613dff939291906158ae565b6040516020818303038152906040528051906020012090509392505050565b600081511115613e315780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613f31576000600385925092509250613fdb565b600060018888888860405160008152602001604052604051613f5694939291906158fb565b6020604051602081039080840390855afa158015613f78573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613fcc57600060016000801b93509350935050613fdb565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061402482613ff9565b9050919050565b61403481614019565b811461403f57600080fd5b50565b6000813590506140518161402b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261407c5761407b614057565b5b8235905067ffffffffffffffff8111156140995761409861405c565b5b6020830191508360208202830111156140b5576140b4614061565b5b9250929050565b600067ffffffffffffffff82169050919050565b6140d9816140bc565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806000806060858703121561411657614115613fef565b5b600061412487828801614042565b945050602085013567ffffffffffffffff81111561414557614144613ff4565b5b61415187828801614066565b93509350506040614164878288016140e7565b91505092959194509250565b60006020828403121561418657614185613fef565b5b6000614194848285016140e7565b91505092915050565b6141a6816140bc565b82525050565b60006020820190506141c1600083018461419d565b92915050565b600063ffffffff82169050919050565b6141e0816141c7565b82525050565b60006020820190506141fb60008301846141d7565b92915050565b60008115159050919050565b61421681614201565b811461422157600080fd5b50565b6000813590506142338161420d565b92915050565b600080604083850312156142505761424f613fef565b5b600061425e85828601614042565b925050602061426f85828601614224565b9150509250929050565b600080604083850312156142905761428f613fef565b5b600061429e85828601614042565b92505060206142af85828601614042565b9150509250929050565b600080fd5b600061012082840312156142d5576142d46142b9565b5b81905092915050565b6000819050919050565b6142f1816142de565b81146142fc57600080fd5b50565b60008135905061430e816142e8565b92915050565b6000819050919050565b61432781614314565b811461433257600080fd5b50565b6000813590506143448161431e565b92915050565b60008060006060848603121561436357614362613fef565b5b600084013567ffffffffffffffff81111561438157614380613ff4565b5b61438d868287016142be565b935050602061439e868287016142ff565b92505060406143af86828701614335565b9150509250925092565b6143c281614314565b82525050565b60006020820190506143dd60008301846143b9565b92915050565b60008083601f8401126143f9576143f8614057565b5b8235905067ffffffffffffffff8111156144165761441561405c565b5b60208301915083600182028301111561443257614431614061565b5b9250929050565b60008060006040848603121561445257614451613fef565b5b600061446086828701614042565b935050602084013567ffffffffffffffff81111561448157614480613ff4565b5b61448d868287016143e3565b92509250509250925092565b6144a2816141c7565b81146144ad57600080fd5b50565b6000813590506144bf81614499565b92915050565b6000806000606084860312156144de576144dd613fef565b5b60006144ec868287016140e7565b93505060206144fd86828701614042565b925050604061450e868287016144b0565b9150509250925092565b6000806040838503121561452f5761452e613fef565b5b600061453d858286016140e7565b925050602061454e85828601614042565b9150509250929050565b600065ffffffffffff82169050919050565b61457381614558565b82525050565b600060808201905061458e600083018761456a565b61459b60208301866141d7565b6145a860408301856141d7565b6145b5606083018461456a565b95945050505050565b600080604083850312156145d5576145d4613fef565b5b60006145e3858286016140e7565b92505060206145f4858286016140e7565b9150509250929050565b60006020828403121561461457614613613fef565b5b6000614622848285016142ff565b91505092915050565b6000602082019050614640600083018461456a565b92915050565b60006020828403121561465c5761465b613fef565b5b600061466a84828501614042565b91505092915050565b600061467e82613ff9565b9050919050565b61468e81614673565b811461469957600080fd5b50565b6000813590506146ab81614685565b92915050565b600080604083850312156146c8576146c7613fef565b5b60006146d68582860161469c565b92505060206146e785828601614335565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614726816146f1565b811461473157600080fd5b50565b6000813590506147438161471d565b92915050565b600080604083850312156147605761475f613fef565b5b600061476e85828601614042565b925050602061477f85828601614734565b9150509250929050565b60008083601f84011261479f5761479e614057565b5b8235905067ffffffffffffffff8111156147bc576147bb61405c565b5b6020830191508360018202830111156147d8576147d7614061565b5b9250929050565b6000806000604084860312156147f8576147f7613fef565b5b6000614806868287016140e7565b935050602084013567ffffffffffffffff81111561482757614826613ff4565b5b61483386828701614789565b92509250509250925092565b61484881614201565b82525050565b6000602082019050614863600083018461483f565b92915050565b600080604083850312156148805761487f613fef565b5b600061488e858286016140e7565b925050602061489f858286016144b0565b9150509250929050565b600080600080606085870312156148c3576148c2613fef565b5b60006148d187828801614042565b94505060206148e287828801614042565b935050604085013567ffffffffffffffff81111561490357614902613ff4565b5b61490f878288016143e3565b925092505092959194509250565b614926816142de565b82525050565b6000602082019050614941600083018461491d565b92915050565b60008083601f84011261495d5761495c614057565b5b8235905067ffffffffffffffff81111561497a5761497961405c565b5b60208301915083602082028301111561499657614995614061565b5b9250929050565b600080602083850312156149b4576149b3613fef565b5b600083013567ffffffffffffffff8111156149d2576149d1613ff4565b5b6149de85828601614947565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a50578082015181840152602081019050614a35565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a7882614a16565b614a828185614a21565b9350614a92818560208601614a32565b614a9b81614a5c565b840191505092915050565b6000614ab28383614a6d565b905092915050565b6000602082019050919050565b6000614ad2826149ea565b614adc81856149f5565b935083602082028501614aee85614a06565b8060005b85811015614b2a5784840389528151614b0b8582614aa6565b9450614b1683614aba565b925060208a01995050600181019050614af2565b50829750879550505050505092915050565b60006020820190508181036000830152614b568184614ac7565b905092915050565b6000819050919050565b6000614b83614b7e614b7984613ff9565b614b5e565b613ff9565b9050919050565b6000614b9582614b68565b9050919050565b6000614ba782614b8a565b9050919050565b614bb781614b9c565b82525050565b6000602082019050614bd26000830184614bae565b92915050565b60008060008060608587031215614bf257614bf1613fef565b5b6000614c0087828801614042565b9450506020614c1187828801614335565b935050604085013567ffffffffffffffff811115614c3257614c31613ff4565b5b614c3e878288016143e3565b925092505092959194509250565b600080600060608486031215614c6557614c64613fef565b5b6000614c7386828701614042565b9350506020614c8486828701614042565b9250506040614c9586828701614734565b9150509250925092565b6000604082019050614cb4600083018561483f565b614cc160208301846141d7565b9392505050565b60008060408385031215614cdf57614cde613fef565b5b6000614ced85828601614042565b9250506020614cfe858286016144b0565b9150509250929050565b614d1181614558565b8114614d1c57600080fd5b50565b600081359050614d2e81614d08565b92915050565b60008060008060608587031215614d4e57614d4d613fef565b5b6000614d5c87828801614042565b945050602085013567ffffffffffffffff811115614d7d57614d7c613ff4565b5b614d89878288016143e3565b93509350506040614d9c87828801614d1f565b91505092959194509250565b6000604082019050614dbd600083018561491d565b614dca60208301846141d7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614e1657614e15613fef565b5b6000614e2484828501614734565b91505092915050565b614e3681614019565b82525050565b6000602082019050614e516000830184614e2d565b92915050565b614e60816146f1565b82525050565b6000606082019050614e7b6000830186614e2d565b614e886020830185614e2d565b614e956040830184614e57565b949350505050565b614ea681614673565b82525050565b6000604082019050614ec16000830185614e9d565b614ece60208301846143b9565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000614f018385614ed5565b9350614f0e838584614ee6565b614f1783614a5c565b840190509392505050565b60006020820190508181036000830152614f3d818486614ef5565b90509392505050565b600081519050614f558161471d565b92915050565b600060208284031215614f7157614f70613fef565b5b6000614f7f84828501614f46565b91505092915050565b600082825260208201905092915050565b6000614fa58385614f88565b9350614fb2838584614ee6565b614fbb83614a5c565b840190509392505050565b6000606082019050614fdb6000830187614e2d565b614fe86020830186614e2d565b8181036040830152614ffb818486614f99565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061504082614314565b915061504b83614314565b925082820390508181111561506357615062615006565b5b92915050565b600080fd5b600080fd5b6000808585111561508757615086615069565b5b838611156150985761509761506e565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112615109576151086150dd565b5b80840192508235915067ffffffffffffffff82111561512b5761512a6150e2565b5b602083019250600182023603831315615147576151466150e7565b5b509250929050565b600081905092915050565b6000615166838561514f565b9350615173838584614ee6565b82840190509392505050565b600061518a82614a16565b615194818561514f565b93506151a4818560208601614a32565b80840191505092915050565b60006151bd82858761515a565b91506151c9828461517f565b9150819050949350505050565b6000815190506151e58161431e565b92915050565b60006020828403121561520157615200613fef565b5b600061520f848285016151d6565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061526161525c61525784615218565b614b5e565b615222565b9050919050565b61527181615246565b82525050565b600060408201905061528c6000830185614e2d565b6152996020830184615268565b9392505050565b60006080820190506152b56000830187614e2d565b6152c26020830186614e2d565b6152cf6040830185614e2d565b6152dc6060830184614e57565b95945050505050565b60006152f082614558565b91506152fb83614558565b9250828201905065ffffffffffff81111561531957615318615006565b5b92915050565b6000608082019050615334600083018861456a565b6153416020830187614e2d565b61534e6040830186614e2d565b8181036060830152615361818486614f99565b90509695505050505050565b60006040820190506153826000830185614e2d565b61538f602083018461419d565b9392505050565b60006020820190506153ab6000830184614e57565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b60006153e7601c83614ed5565b91506153f2826153b1565b602082019050919050565b60006020820190508181036000830152615416816153da565b9050919050565b600082905092915050565b600082821b905092915050565b6000615441838361541d565b8261544c81356146f1565b9250600482101561548c576154877fffffffff0000000000000000000000000000000000000000000000000000000083600403600802615428565b831692505b505092915050565b6000602082840312156154aa576154a9613fef565b5b60006154b88482850161469c565b91505092915050565b50565b60006154d160008361514f565b91506154dc826154c1565b600082019050919050565b60006154f2826154c4565b9150819050919050565b60006040820190506155116000830185614e2d565b61551e6020830184614e57565b9392505050565b6000615531828461517f565b915081905092915050565b600060608201905061555160008301866141d7565b61555e602083018561456a565b61556b604083018461483f565b949350505050565b600060408201905061558860008301856141d7565b615595602083018461456a565b9392505050565b600080fd5b6155aa82614a5c565b810181811067ffffffffffffffff821117156155c9576155c86150ae565b5b80604052505050565b60006155dc613fe5565b90506155e882826155a1565b919050565b600067ffffffffffffffff821115615608576156076150ae565b5b61561182614a5c565b9050602081019050919050565b600061563161562c846155ed565b6155d2565b90508281526020810184848401111561564d5761564c61559c565b5b615658848285614ee6565b509392505050565b600082601f83011261567557615674614057565b5b813561568584826020860161561e565b91505092915050565b6000806000606084860312156156a7576156a6613fef565b5b60006156b58682870161469c565b93505060206156c686828701614335565b925050604084013567ffffffffffffffff8111156156e7576156e6613ff4565b5b6156f386828701615660565b9150509250925092565b6000615708826141c7565b9150615713836141c7565b9250828203905063ffffffff81111561572f5761572e615006565b5b92915050565b6000819050919050565b600060ff82169050919050565b600061576761576261575d84615735565b614b5e565b61573f565b9050919050565b6157778161574c565b82525050565b6000604082019050615792600083018561576e565b61579f60208301846143b9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006157e082614314565b91506157eb83614314565b925082820190508082111561580357615802615006565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b600061583f601583614ed5565b915061584a82615809565b602082019050919050565b6000602082019050818103600083015261586e81615832565b9050919050565b600061588082614a16565b61588a8185614f88565b935061589a818560208601614a32565b6158a381614a5c565b840191505092915050565b60006060820190506158c36000830186614e2d565b6158d06020830185614e2d565b81810360408301526158e28184615875565b9050949350505050565b6158f58161573f565b82525050565b6000608082019050615910600083018761491d565b61591d60208301866158ec565b61592a604083018561491d565b615937606083018461491d565b9594505050505056fea2646970667358221220d51b7093dbabfee71d9a347e3ec3ed3b9897cdc99781b3f7e61b8baac3c5bdab64736f6c63430008180033",
|
|
1398
|
-
"deployedBytecode": "0x6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906140fc565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b9190614170565b610a15565b60405161029d91906141ac565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c89190614170565b610a5d565b6040516102da91906141e6565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190614239565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e9190614279565b610ad9565b005b34801561034157600080fd5b5061035c6004803603810190610357919061434a565b610b50565b60405161036991906143c8565b60405180910390f35b61038c60048036038101906103879190614439565b610b83565b60405161039991906141e6565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906144c5565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190614518565b610cf8565b6040516104029493929190614579565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d91906145be565b610dcf565b005b34801561044057600080fd5b5061045b600480360381019061045691906145fe565b610de5565b604051610468919061462b565b60405180910390f35b34801561047d57600080fd5b50610486610e31565b60405161049391906141ac565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906145fe565b610e3d565b6040516104d091906141e6565b60405180910390f35b3480156104e557600080fd5b506104ee610e6d565b6040516104fb91906141e6565b60405180910390f35b61050c610e78565b005b34801561051a57600080fd5b5061053560048036038101906105309190614646565b610eed565b60405161054291906141e6565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d91906146b1565b610f6a565b005b34801561058057600080fd5b5061059b600480360381019061059691906145be565b610ffd565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190614170565b611013565b6040516105d191906141ac565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190614749565b61105b565b60405161060e91906141ac565b60405180910390f35b34801561062357600080fd5b5061062c61110a565b60405161063991906141ac565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906147df565b61110f565b005b34801561067757600080fd5b50610692600480360381019061068d9190614439565b6111d8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190614646565b6112f6565b6040516106c8919061484e565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190614869565b61134e565b005b34801561070657600080fd5b50610721600480360381019061071c91906148a9565b611364565b60405161072e919061492c565b60405180910390f35b34801561074357600080fd5b5061075e6004803603810190610759919061499d565b61139d565b60405161076b9190614b3c565b60405180910390f35b34801561078057600080fd5b50610789611581565b6040516107969190614bbd565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614bd8565b6115a9565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614c4c565b611607565b6040516107fd929190614c9f565b60405180910390f35b34801561081257600080fd5b5061082d60048036038101906108289190614518565b6116b4565b005b34801561083b57600080fd5b506108446116cb565b60405161085191906143c8565b60405180910390f35b34801561086657600080fd5b5061086f611753565b60405161087c91906141e6565b60405180910390f35b34801561089157600080fd5b5061089a61175e565b6040516108a791906143c8565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d29190614518565b6117e9565b6040516108e5929190614c9f565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614cc8565b611866565b005b34801561092357600080fd5b5061093e600480360381019061093991906148a9565b61187c565b60405161094b91906141e6565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614d34565b611a6f565b604051610989929190614da8565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b49190614518565b611c53565b005b6109c3611cce565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614dd1565b5b90506020020160208101906109fd9190614e00565b84611d7b565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e90565b9050919050565b610acb611cce565b610ad58282611eb9565b5050565b610ae1611cce565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614e3c565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a611fd4565b610b64848461204b565b9050610b738460200135612277565b610b7c8261227a565b9392505050565b600080610b8e612316565b9050600080610b9f8388888861231e565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861239e565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614e66565b60405180910390fd5b6000610c1484898989611364565b90506000808363ffffffff16141580610c3e57506000610c3383610de5565b65ffffffffffff1614155b15610c4f57610c4c826123c7565b90505b60006003549050610c698a610c648b8b61239e565b61257d565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050346125b0565b50806003819055508196505050505050509392505050565b610cde611cce565b610cf28383610cec86610a5d565b8461267d565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450610db98160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a4e565b8094508195508296505050505092959194509250565b610dd7611cce565b610de18282612a71565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e1c81612b80565b610e265780610e29565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610e80611581565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610eb99190614e3c565b6000604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050565b6000610f636000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e90565b9050919050565b610f84610f75612316565b610f7d612bbc565b6001612bc9565b50610f8d611581565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b8152600401610fc7929190614eac565b600060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050505050565b611005611cce565b61100f8282612cc7565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611117611cce565b600067ffffffffffffffff168367ffffffffffffffff16148061114d575067ffffffffffffffff80168367ffffffffffffffff16145b1561118f57826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161118691906141ac565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a45083836040516111cb929190614f22565b60405180910390a2505050565b60006111e2612316565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190614f5b565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112db57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016112d29190614e3c565b60405180910390fd5b6112ef6112ea85838686611364565b6123c7565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b611356611cce565b6113608282612dd6565b5050565b60008484848460405160200161137d9493929190614fc6565b604051602081830303815290604052805190602001209050949350505050565b606060006113a9612316565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144c576000366113e6612f4d565b60003690506113f59190615035565b90809261140493929190615073565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061149b565b600067ffffffffffffffff811115611467576114666150ae565b5b6040519080825280601f01601f1916602001820160405280156114995781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff8111156114ba576114b96150ae565b5b6040519080825280602002602001820160405280156114ed57816020015b60608152602001906001900390816114d85790505b50915060005b848490508110156115795761154e3086868481811061151557611514614dd1565b5b905060200281019061152791906150ec565b8560405160200161153a939291906151b0565b604051602081830303815290604052612f52565b83828151811061156157611560614dd1565b5b602002602001018190525080806001019150506114f3565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115b1611fd4565b6116008483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050856125b0565b5050505050565b600080611613846112f6565b1561162457600080915091506116ac565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361166c576116618484612fd6565b6000915091506116ac565b6000611678858561105b565b905060008061168783896117e9565b9150915081611698576000806116a4565b60008163ffffffff1614815b945094505050505b935093915050565b6116bc611cce565b6116c68282612fee565b505050565b60006116d5611581565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161170d9190614e3c565b602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e91906151eb565b905090565b600062069780905090565b6000611768611581565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117a3929190615277565b602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e491906151eb565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361181457600160009150915061185f565b6000806118218686610cf8565b50509150915060008265ffffffffffff161415801561185757506118436131da565b65ffffffffffff168265ffffffffffff1611155b819350935050505b9250929050565b61186e611cce565b61187882826131ea565b5050565b600080611887612316565b90506000611895858561239e565b905060006118a588888888611364565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff160361191c57806040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401611913919061492c565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146119d657600061195c6000856117e9565b509050600061197c6119766119718b8761105b565b610a15565b866117e9565b5090508115801561198b575080155b156119d357848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016119ca94939291906152a0565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611a7c612316565b90506000611a8c8289898961231e565b91505060008163ffffffff16611aa06131da565b611aaa91906152e5565b905060008263ffffffff161480611ae4575060008665ffffffffffff16118015611ae357508065ffffffffffff168665ffffffffffff16105b5b15611b33578289611af58a8a61239e565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b2a93929190614e66565b60405180910390fd5b611b4d8665ffffffffffff168265ffffffffffff16613343565b9550611b5b838a8a8a611364565b9450611b668561335c565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611c3f95949392919061531f565b60405180910390a350505094509492505050565b611c5b612316565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cc98282612fee565b505050565b6000611cd8612316565b9050600080611cee83611ce9612bbc565b6133ee565b9150915081611d765760008163ffffffff1603611d5a576000611d17611d12612bbc565b6134dc565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611d5192919061536d565b60405180910390fd5b611d74611d6f8430611d6a612bbc565b611364565b6123c7565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611e839190615396565b60405180910390a3505050565b600080611eac836dffffffffffffffffffffffffffff16612a4e565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f2957816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611f209190614e3c565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611fc8919061484e565b60405180910390a25050565b611fdc611581565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612049576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612040906153fd565b60405180910390fd5b565b60008083806060019061205e91906150ec565b60009060049261207093929190615073565b9061207b9190615435565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461211f57806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016121169190615396565b60405180910390fd5b600084806060019061213191906150ec565b60049060249261214393929190615073565b8101906121509190615494565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121b7576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121c2856138c4565b9050600061222382888061010001906121db91906150ec565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506138fa565b90506122408188806060019061223991906150ec565b6000612bc9565b612251576001945050505050612271565b61226a8188806060019061226591906150ec565b613926565b9450505050505b92915050565b50565b600081146123135760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516122ca906154e7565b600060405180830381858888f193505050503d8060008114612308576040519150601f19603f3d011682016040523d82523d6000602084013e61230d565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123685761235f8685856133ee565b91509150612395565b6004848490501061238c576123878686612382878761239e565b611607565b612390565b6000805b915091505b94509492505050565b600082826000906004926123b493929190615073565b906123bf9190615435565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361246d57836040517f60a299b0000000000000000000000000000000000000000000000000000000008152600401612464919061492c565b60405180910390fd5b6124756131da565b65ffffffffffff168265ffffffffffff1611156124c957836040517f18cb6b7a0000000000000000000000000000000000000000000000000000000081526004016124c0919061492c565b60405180910390fd5b6124d282612b80565b1561251457836040517f78a5d6e400000000000000000000000000000000000000000000000000000000815260040161250b919061492c565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b600082826040516020016125929291906154fc565b60405160208183030381529060405280519060200120905092915050565b6060814710156125f757306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016125ee9190614e3c565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516126209190615525565b60006040518083038185875af1925050503d806000811461265d576040519150601f19603f3d011682016040523d82523d6000602084013e612662565b606091505b50915091506126728683836139d9565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff16036126d757846040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016126ce91906141ac565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612895578463ffffffff166127796131da565b61278391906152e5565b905060405180604001604052808265ffffffffffff1681526020016127ad8663ffffffff16613a68565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506129e4565b61293f846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612a399392919061553c565b60405180910390a38192505050949350505050565b6000806000612a6484612a5f6131da565b613b0a565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612aa7575067ffffffffffffffff80168267ffffffffffffffff16145b15612ae957816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612ae091906141ac565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612b8a6131da565b65ffffffffffff16612b9a610e6d565b63ffffffff1683612bab91906152e5565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612bf787308888600090600492612be793929190615073565b90612bf29190615435565b611607565b9150915081612cb85760008163ffffffff161115612c41576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612cad5786612c70308888600090600492612c6093929190615073565b90612c6b9190615435565b61105b565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612ca492919061536d565b60405180910390fd5b600092505050612cbf565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612cfd575067ffffffffffffffff80168267ffffffffffffffff16145b15612d3f57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612d3691906141ac565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612e2e57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612e2591906141ac565b60405180910390fd5b6000612ea082612e3c611753565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612f40929190615573565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612f7c9190615525565b600060405180830381855af49150503d8060008114612fb7576040519150601f19603f3d011682016040523d82523d6000602084013e612fbc565b606091505b5091509150612fcc8583836139d9565b9250505092915050565b6000612fe2838361257d565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361304857826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161303f91906141ac565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036130dd57600090506131d4565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b60006131e542613b67565b905090565b6000613273826131f8611753565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a789092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051613336929190615573565b60405180910390a2505050565b60008183116133525781613354565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff16141580156133a857506133a681612b80565b155b156133ea57816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016133e1919061492c565b60405180910390fd5b5050565b600080600484849050101561340957600080915091506134d4565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361345a5761344f3061344a868661239e565b612fd6565b6000915091506134d4565b600080600061346987876134dc565b9250925092508261348357600080945094505050506134d4565b600080613490848b6117e9565b91509150816134aa576000809650965050505050506134d4565b6134c08363ffffffff168263ffffffff16613343565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156134fd5760008060009250925092506138bd565b6000613509868661239e565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806135a257506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806135f15750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80613640575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061368f575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156136a5576001600080935093509350506138bd565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061373c575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061378b57506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137d557600086866004906024926137a693929190615073565b8101906137b39190615494565b905060006137c082610eed565b905060016000829550955095505050506138bd565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061386c575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156138b0576000868660049060249261388793929190615073565b8101906138949190614170565b905060016138a182611013565b600094509450945050506138bd565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b60008060008061390a8686613bc1565b92509250925061391a8282613c1d565b82935050505092915050565b600080600084846004906004888890506139409190615035565b9261394d93929190615073565b81019061395a919061568e565b9250509150600080613980888561397b600087613d8190919063ffffffff16565b611607565b915091508180613996575060008163ffffffff16145b156139b557816139a75760016139aa565b60005b9450505050506139d2565b6139c86139c3898686613de8565b6123c7565b5060009450505050505b9392505050565b6060826139ee576139e982613e1e565b613a60565b60008251148015613a16575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613a5857836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613a4f9190614e3c565b60405180910390fd5b819050613a61565b5b9392505050565b60008163ffffffff169050919050565b6000806000613a96866dffffffffffffffffffffffffffff16611e90565b90506000613ad68563ffffffff168763ffffffff168463ffffffff1611613abe576000613acb565b8784613aca91906156fd565b5b63ffffffff16613343565b90508063ffffffff16613ae76131da565b613af191906152e5565b9250613afe828785613e63565b93505050935093915050565b600080600080600080613b2c886dffffffffffffffffffffffffffff16613eaf565b9250925092508665ffffffffffff168165ffffffffffff161115613b5257828282613b57565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613bb9576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613bb092919061577d565b60405180910390fd5b819050919050565b60008060006041845103613c065760008060006020870151925060408701519150606087015160001a9050613bf888828585613ef1565b955095509550505050613c16565b60006002855160001b9250925092505b9250925092565b60006003811115613c3157613c306157a6565b5b826003811115613c4457613c436157a6565b5b0315613d7d5760016003811115613c5e57613c5d6157a6565b5b826003811115613c7157613c706157a6565b5b03613ca8576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613cbc57613cbb6157a6565b5b826003811115613ccf57613cce6157a6565b5b03613d14578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613d0b91906143c8565b60405180910390fd5b600380811115613d2757613d266157a6565b5b826003811115613d3a57613d396157a6565b5b03613d7c57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613d73919061492c565b60405180910390fd5b5b5050565b6000602082613d9091906157d5565b83511015613dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dca90615855565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613dff939291906158ae565b6040516020818303038152906040528051906020012090509392505050565b600081511115613e315780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613f31576000600385925092509250613fdb565b600060018888888860405160008152602001604052604051613f5694939291906158fb565b6020604051602081039080840390855afa158015613f78573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613fcc57600060016000801b93509350935050613fdb565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061402482613ff9565b9050919050565b61403481614019565b811461403f57600080fd5b50565b6000813590506140518161402b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261407c5761407b614057565b5b8235905067ffffffffffffffff8111156140995761409861405c565b5b6020830191508360208202830111156140b5576140b4614061565b5b9250929050565b600067ffffffffffffffff82169050919050565b6140d9816140bc565b81146140e457600080fd5b50565b6000813590506140f6816140d0565b92915050565b6000806000806060858703121561411657614115613fef565b5b600061412487828801614042565b945050602085013567ffffffffffffffff81111561414557614144613ff4565b5b61415187828801614066565b93509350506040614164878288016140e7565b91505092959194509250565b60006020828403121561418657614185613fef565b5b6000614194848285016140e7565b91505092915050565b6141a6816140bc565b82525050565b60006020820190506141c1600083018461419d565b92915050565b600063ffffffff82169050919050565b6141e0816141c7565b82525050565b60006020820190506141fb60008301846141d7565b92915050565b60008115159050919050565b61421681614201565b811461422157600080fd5b50565b6000813590506142338161420d565b92915050565b600080604083850312156142505761424f613fef565b5b600061425e85828601614042565b925050602061426f85828601614224565b9150509250929050565b600080604083850312156142905761428f613fef565b5b600061429e85828601614042565b92505060206142af85828601614042565b9150509250929050565b600080fd5b600061012082840312156142d5576142d46142b9565b5b81905092915050565b6000819050919050565b6142f1816142de565b81146142fc57600080fd5b50565b60008135905061430e816142e8565b92915050565b6000819050919050565b61432781614314565b811461433257600080fd5b50565b6000813590506143448161431e565b92915050565b60008060006060848603121561436357614362613fef565b5b600084013567ffffffffffffffff81111561438157614380613ff4565b5b61438d868287016142be565b935050602061439e868287016142ff565b92505060406143af86828701614335565b9150509250925092565b6143c281614314565b82525050565b60006020820190506143dd60008301846143b9565b92915050565b60008083601f8401126143f9576143f8614057565b5b8235905067ffffffffffffffff8111156144165761441561405c565b5b60208301915083600182028301111561443257614431614061565b5b9250929050565b60008060006040848603121561445257614451613fef565b5b600061446086828701614042565b935050602084013567ffffffffffffffff81111561448157614480613ff4565b5b61448d868287016143e3565b92509250509250925092565b6144a2816141c7565b81146144ad57600080fd5b50565b6000813590506144bf81614499565b92915050565b6000806000606084860312156144de576144dd613fef565b5b60006144ec868287016140e7565b93505060206144fd86828701614042565b925050604061450e868287016144b0565b9150509250925092565b6000806040838503121561452f5761452e613fef565b5b600061453d858286016140e7565b925050602061454e85828601614042565b9150509250929050565b600065ffffffffffff82169050919050565b61457381614558565b82525050565b600060808201905061458e600083018761456a565b61459b60208301866141d7565b6145a860408301856141d7565b6145b5606083018461456a565b95945050505050565b600080604083850312156145d5576145d4613fef565b5b60006145e3858286016140e7565b92505060206145f4858286016140e7565b9150509250929050565b60006020828403121561461457614613613fef565b5b6000614622848285016142ff565b91505092915050565b6000602082019050614640600083018461456a565b92915050565b60006020828403121561465c5761465b613fef565b5b600061466a84828501614042565b91505092915050565b600061467e82613ff9565b9050919050565b61468e81614673565b811461469957600080fd5b50565b6000813590506146ab81614685565b92915050565b600080604083850312156146c8576146c7613fef565b5b60006146d68582860161469c565b92505060206146e785828601614335565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614726816146f1565b811461473157600080fd5b50565b6000813590506147438161471d565b92915050565b600080604083850312156147605761475f613fef565b5b600061476e85828601614042565b925050602061477f85828601614734565b9150509250929050565b60008083601f84011261479f5761479e614057565b5b8235905067ffffffffffffffff8111156147bc576147bb61405c565b5b6020830191508360018202830111156147d8576147d7614061565b5b9250929050565b6000806000604084860312156147f8576147f7613fef565b5b6000614806868287016140e7565b935050602084013567ffffffffffffffff81111561482757614826613ff4565b5b61483386828701614789565b92509250509250925092565b61484881614201565b82525050565b6000602082019050614863600083018461483f565b92915050565b600080604083850312156148805761487f613fef565b5b600061488e858286016140e7565b925050602061489f858286016144b0565b9150509250929050565b600080600080606085870312156148c3576148c2613fef565b5b60006148d187828801614042565b94505060206148e287828801614042565b935050604085013567ffffffffffffffff81111561490357614902613ff4565b5b61490f878288016143e3565b925092505092959194509250565b614926816142de565b82525050565b6000602082019050614941600083018461491d565b92915050565b60008083601f84011261495d5761495c614057565b5b8235905067ffffffffffffffff81111561497a5761497961405c565b5b60208301915083602082028301111561499657614995614061565b5b9250929050565b600080602083850312156149b4576149b3613fef565b5b600083013567ffffffffffffffff8111156149d2576149d1613ff4565b5b6149de85828601614947565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a50578082015181840152602081019050614a35565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a7882614a16565b614a828185614a21565b9350614a92818560208601614a32565b614a9b81614a5c565b840191505092915050565b6000614ab28383614a6d565b905092915050565b6000602082019050919050565b6000614ad2826149ea565b614adc81856149f5565b935083602082028501614aee85614a06565b8060005b85811015614b2a5784840389528151614b0b8582614aa6565b9450614b1683614aba565b925060208a01995050600181019050614af2565b50829750879550505050505092915050565b60006020820190508181036000830152614b568184614ac7565b905092915050565b6000819050919050565b6000614b83614b7e614b7984613ff9565b614b5e565b613ff9565b9050919050565b6000614b9582614b68565b9050919050565b6000614ba782614b8a565b9050919050565b614bb781614b9c565b82525050565b6000602082019050614bd26000830184614bae565b92915050565b60008060008060608587031215614bf257614bf1613fef565b5b6000614c0087828801614042565b9450506020614c1187828801614335565b935050604085013567ffffffffffffffff811115614c3257614c31613ff4565b5b614c3e878288016143e3565b925092505092959194509250565b600080600060608486031215614c6557614c64613fef565b5b6000614c7386828701614042565b9350506020614c8486828701614042565b9250506040614c9586828701614734565b9150509250925092565b6000604082019050614cb4600083018561483f565b614cc160208301846141d7565b9392505050565b60008060408385031215614cdf57614cde613fef565b5b6000614ced85828601614042565b9250506020614cfe858286016144b0565b9150509250929050565b614d1181614558565b8114614d1c57600080fd5b50565b600081359050614d2e81614d08565b92915050565b60008060008060608587031215614d4e57614d4d613fef565b5b6000614d5c87828801614042565b945050602085013567ffffffffffffffff811115614d7d57614d7c613ff4565b5b614d89878288016143e3565b93509350506040614d9c87828801614d1f565b91505092959194509250565b6000604082019050614dbd600083018561491d565b614dca60208301846141d7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614e1657614e15613fef565b5b6000614e2484828501614734565b91505092915050565b614e3681614019565b82525050565b6000602082019050614e516000830184614e2d565b92915050565b614e60816146f1565b82525050565b6000606082019050614e7b6000830186614e2d565b614e886020830185614e2d565b614e956040830184614e57565b949350505050565b614ea681614673565b82525050565b6000604082019050614ec16000830185614e9d565b614ece60208301846143b9565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000614f018385614ed5565b9350614f0e838584614ee6565b614f1783614a5c565b840190509392505050565b60006020820190508181036000830152614f3d818486614ef5565b90509392505050565b600081519050614f558161471d565b92915050565b600060208284031215614f7157614f70613fef565b5b6000614f7f84828501614f46565b91505092915050565b600082825260208201905092915050565b6000614fa58385614f88565b9350614fb2838584614ee6565b614fbb83614a5c565b840190509392505050565b6000606082019050614fdb6000830187614e2d565b614fe86020830186614e2d565b8181036040830152614ffb818486614f99565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061504082614314565b915061504b83614314565b925082820390508181111561506357615062615006565b5b92915050565b600080fd5b600080fd5b6000808585111561508757615086615069565b5b838611156150985761509761506e565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112615109576151086150dd565b5b80840192508235915067ffffffffffffffff82111561512b5761512a6150e2565b5b602083019250600182023603831315615147576151466150e7565b5b509250929050565b600081905092915050565b6000615166838561514f565b9350615173838584614ee6565b82840190509392505050565b600061518a82614a16565b615194818561514f565b93506151a4818560208601614a32565b80840191505092915050565b60006151bd82858761515a565b91506151c9828461517f565b9150819050949350505050565b6000815190506151e58161431e565b92915050565b60006020828403121561520157615200613fef565b5b600061520f848285016151d6565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061526161525c61525784615218565b614b5e565b615222565b9050919050565b61527181615246565b82525050565b600060408201905061528c6000830185614e2d565b6152996020830184615268565b9392505050565b60006080820190506152b56000830187614e2d565b6152c26020830186614e2d565b6152cf6040830185614e2d565b6152dc6060830184614e57565b95945050505050565b60006152f082614558565b91506152fb83614558565b9250828201905065ffffffffffff81111561531957615318615006565b5b92915050565b6000608082019050615334600083018861456a565b6153416020830187614e2d565b61534e6040830186614e2d565b8181036060830152615361818486614f99565b90509695505050505050565b60006040820190506153826000830185614e2d565b61538f602083018461419d565b9392505050565b60006020820190506153ab6000830184614e57565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b60006153e7601c83614ed5565b91506153f2826153b1565b602082019050919050565b60006020820190508181036000830152615416816153da565b9050919050565b600082905092915050565b600082821b905092915050565b6000615441838361541d565b8261544c81356146f1565b9250600482101561548c576154877fffffffff0000000000000000000000000000000000000000000000000000000083600403600802615428565b831692505b505092915050565b6000602082840312156154aa576154a9613fef565b5b60006154b88482850161469c565b91505092915050565b50565b60006154d160008361514f565b91506154dc826154c1565b600082019050919050565b60006154f2826154c4565b9150819050919050565b60006040820190506155116000830185614e2d565b61551e6020830184614e57565b9392505050565b6000615531828461517f565b915081905092915050565b600060608201905061555160008301866141d7565b61555e602083018561456a565b61556b604083018461483f565b949350505050565b600060408201905061558860008301856141d7565b615595602083018461456a565b9392505050565b600080fd5b6155aa82614a5c565b810181811067ffffffffffffffff821117156155c9576155c86150ae565b5b80604052505050565b60006155dc613fe5565b90506155e882826155a1565b919050565b600067ffffffffffffffff821115615608576156076150ae565b5b61561182614a5c565b9050602081019050919050565b600061563161562c846155ed565b6155d2565b90508281526020810184848401111561564d5761564c61559c565b5b615658848285614ee6565b509392505050565b600082601f83011261567557615674614057565b5b813561568584826020860161561e565b91505092915050565b6000806000606084860312156156a7576156a6613fef565b5b60006156b58682870161469c565b93505060206156c686828701614335565b925050604084013567ffffffffffffffff8111156156e7576156e6613ff4565b5b6156f386828701615660565b9150509250925092565b6000615708826141c7565b9150615713836141c7565b9250828203905063ffffffff81111561572f5761572e615006565b5b92915050565b6000819050919050565b600060ff82169050919050565b600061576761576261575d84615735565b614b5e565b61573f565b9050919050565b6157778161574c565b82525050565b6000604082019050615792600083018561576e565b61579f60208301846143b9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006157e082614314565b91506157eb83614314565b925082820190508082111561580357615802615006565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b600061583f601583614ed5565b915061584a82615809565b602082019050919050565b6000602082019050818103600083015261586e81615832565b9050919050565b600061588082614a16565b61588a8185614f88565b935061589a818560208601614a32565b6158a381614a5c565b840191505092915050565b60006060820190506158c36000830186614e2d565b6158d06020830185614e2d565b81810360408301526158e28184615875565b9050949350505050565b6158f58161573f565b82525050565b6000608082019050615910600083018761491d565b61591d60208301866158ec565b61592a604083018561491d565b615937606083018461491d565b9594505050505056fea2646970667358221220d51b7093dbabfee71d9a347e3ec3ed3b9897cdc99781b3f7e61b8baac3c5bdab64736f6c63430008180033",
|
|
1397
|
+
"bytecode": "0x60a06040523480156200001157600080fd5b50604051620064623803806200646283398181016040528101906200003791906200084d565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f0813ada2000000000000000000000000000000000000000000000000000000008152600401620000a49190620008a5565b60405180910390fd5b620000c36000826000806200010160201b60201c565b50508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050505062000af3565b600067ffffffffffffffff80168567ffffffffffffffff16036200015e57846040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401620001559190620008e7565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff161490506000811562000330578463ffffffff1662000209620004ed60201b60201c565b62000215919062000945565b905060405180604001604052808265ffffffffffff168152602001620002478663ffffffff166200050560201b60201c565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555090505062000481565b620003dc846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff166200051560201b9092919060201c565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051620004d893929190620009d5565b60405180910390a38192505050949350505050565b60006200050042620005cd60201b60201c565b905090565b60008163ffffffff169050919050565b60008060006200053b866dffffffffffffffffffffffffffff166200062a60201b60201c565b90506000620005878563ffffffff168763ffffffff168463ffffffff16116200056657600062000575565b878462000574919062000a12565b5b63ffffffff166200065b60201b60201c565b90508063ffffffff16620005a0620004ed60201b60201c565b620005ac919062000945565b9250620005c18287856200067660201b60201c565b93505050935093915050565b600065ffffffffffff801682111562000622576030826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016200061992919062000ac6565b60405180910390fd5b819050919050565b6000806200064e836dffffffffffffffffffffffffffff16620006c260201b60201c565b5050905080915050919050565b60008183116200066c57816200066e565b825b905092915050565b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000620006e884620006dc620004ed60201b60201c565b620006f560201b60201c565b9250925092509193909250565b6000806000806000806200071f886dffffffffffffffffffffffffffff166200075c60201b60201c565b9250925092508665ffffffffffff168165ffffffffffff16111562000747578282826200074c565b816000805b9550955095505050509250925092565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007d082620007a3565b9050919050565b6000620007e482620007c3565b9050919050565b620007f681620007d7565b81146200080257600080fd5b50565b6000815190506200081681620007eb565b92915050565b6200082781620007c3565b81146200083357600080fd5b50565b60008151905062000847816200081c565b92915050565b600080604083850312156200086757620008666200079e565b5b6000620008778582860162000805565b92505060206200088a8582860162000836565b9150509250929050565b6200089f81620007c3565b82525050565b6000602082019050620008bc600083018462000894565b92915050565b600067ffffffffffffffff82169050919050565b620008e181620008c2565b82525050565b6000602082019050620008fe6000830184620008d6565b92915050565b600065ffffffffffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009528262000904565b91506200095f8362000904565b9250828201905065ffffffffffff81111562000980576200097f62000916565b5b92915050565b600063ffffffff82169050919050565b620009a18162000986565b82525050565b620009b28162000904565b82525050565b60008115159050919050565b620009cf81620009b8565b82525050565b6000606082019050620009ec600083018662000996565b620009fb6020830185620009a7565b62000a0a6040830184620009c4565b949350505050565b600062000a1f8262000986565b915062000a2c8362000986565b9250828203905063ffffffff81111562000a4b5762000a4a62000916565b5b92915050565b6000819050919050565b600060ff82169050919050565b6000819050919050565b600062000a9362000a8d62000a878462000a51565b62000a68565b62000a5b565b9050919050565b62000aa58162000a72565b82525050565b6000819050919050565b62000ac08162000aab565b82525050565b600060408201905062000add600083018562000a9a565b62000aec602083018462000ab5565b9392505050565b60805161595362000b0f600039600061158501526159536000f3fe6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906140d9565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b919061414d565b610a15565b60405161029d9190614189565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c8919061414d565b610a5d565b6040516102da91906141c3565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190614216565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e9190614256565b610ad9565b005b34801561034157600080fd5b5061035c60048036038101906103579190614327565b610b50565b60405161036991906143a5565b60405180910390f35b61038c60048036038101906103879190614416565b610b83565b60405161039991906141c3565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906144a2565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906144f5565b610cf8565b6040516104029493929190614556565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d919061459b565b610dcf565b005b34801561044057600080fd5b5061045b600480360381019061045691906145db565b610de5565b6040516104689190614608565b60405180910390f35b34801561047d57600080fd5b50610486610e31565b6040516104939190614189565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906145db565b610e3d565b6040516104d091906141c3565b60405180910390f35b3480156104e557600080fd5b506104ee610e6d565b6040516104fb91906141c3565b60405180910390f35b61050c610e78565b005b34801561051a57600080fd5b5061053560048036038101906105309190614623565b610eed565b60405161054291906141c3565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d919061468e565b610f6a565b005b34801561058057600080fd5b5061059b6004803603810190610596919061459b565b610ffd565b005b3480156105a957600080fd5b506105c460048036038101906105bf919061414d565b611013565b6040516105d19190614189565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190614726565b61105b565b60405161060e9190614189565b60405180910390f35b34801561062357600080fd5b5061062c61110a565b6040516106399190614189565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906147bc565b61110f565b005b34801561067757600080fd5b50610692600480360381019061068d9190614416565b6111d8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190614623565b6112f6565b6040516106c8919061482b565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190614846565b61134e565b005b34801561070657600080fd5b50610721600480360381019061071c9190614886565b611364565b60405161072e9190614909565b60405180910390f35b34801561074357600080fd5b5061075e6004803603810190610759919061497a565b61139d565b60405161076b9190614b19565b60405180910390f35b34801561078057600080fd5b50610789611581565b6040516107969190614b9a565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614bb5565b6115a9565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614c29565b611607565b6040516107fd929190614c7c565b60405180910390f35b34801561081257600080fd5b5061082d600480360381019061082891906144f5565b6116b4565b005b34801561083b57600080fd5b506108446116cb565b60405161085191906143a5565b60405180910390f35b34801561086657600080fd5b5061086f611753565b60405161087c91906141c3565b60405180910390f35b34801561089157600080fd5b5061089a61175e565b6040516108a791906143a5565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d291906144f5565b6117e9565b6040516108e5929190614c7c565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614ca5565b611843565b005b34801561092357600080fd5b5061093e60048036038101906109399190614886565b611859565b60405161094b91906141c3565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614d11565b611a4c565b604051610989929190614d85565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b491906144f5565b611c30565b005b6109c3611cab565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614dae565b5b90506020020160208101906109fd9190614ddd565b84611d58565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e6d565b9050919050565b610acb611cab565b610ad58282611e96565b5050565b610ae1611cab565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614e19565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a611fb1565b610b648484612028565b9050610b738460200135612254565b610b7c82612257565b9392505050565b600080610b8e6122f3565b9050600080610b9f838888886122fb565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861237b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614e43565b60405180910390fd5b6000610c1484898989611364565b90506000808363ffffffff16141580610c3e57506000610c3383610de5565b65ffffffffffff1614155b15610c4f57610c4c826123a4565b90505b60006003549050610c698a610c648b8b61237b565b61255a565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503461258d565b50806003819055508196505050505050509392505050565b610cde611cab565b610cf28383610cec86610a5d565b8461265a565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450610db98160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a2b565b8094508195508296505050505092959194509250565b610dd7611cab565b610de18282612a4e565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e1c81612b5d565b610e265780610e29565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610e80611581565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610eb99190614e19565b6000604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050565b6000610f636000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e6d565b9050919050565b610f84610f756122f3565b610f7d612b99565b6001612ba6565b50610f8d611581565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b8152600401610fc7929190614e89565b600060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050505050565b611005611cab565b61100f8282612ca4565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611117611cab565b600067ffffffffffffffff168367ffffffffffffffff16148061114d575067ffffffffffffffff80168367ffffffffffffffff16145b1561118f57826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016111869190614189565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a45083836040516111cb929190614eff565b60405180910390a2505050565b60006111e26122f3565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190614f38565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112db57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016112d29190614e19565b60405180910390fd5b6112ef6112ea85838686611364565b6123a4565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b611356611cab565b6113608282612db3565b5050565b60008484848460405160200161137d9493929190614fa3565b604051602081830303815290604052805190602001209050949350505050565b606060006113a96122f3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144c576000366113e6612f2a565b60003690506113f59190615012565b90809261140493929190615050565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061149b565b600067ffffffffffffffff8111156114675761146661508b565b5b6040519080825280601f01601f1916602001820160405280156114995781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff8111156114ba576114b961508b565b5b6040519080825280602002602001820160405280156114ed57816020015b60608152602001906001900390816114d85790505b50915060005b848490508110156115795761154e3086868481811061151557611514614dae565b5b905060200281019061152791906150c9565b8560405160200161153a9392919061518d565b604051602081830303815290604052612f2f565b83828151811061156157611560614dae565b5b602002602001018190525080806001019150506114f3565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115b1611fb1565b6116008483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561258d565b5050505050565b600080611613846112f6565b1561162457600080915091506116ac565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361166c576116618484612fb3565b6000915091506116ac565b6000611678858561105b565b905060008061168783896117e9565b9150915081611698576000806116a4565b60008163ffffffff1614815b945094505050505b935093915050565b6116bc611cab565b6116c68282612fcb565b505050565b60006116d5611581565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161170d9190614e19565b602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e91906151c8565b905090565b600062069780905090565b6000611768611581565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117a3929190615254565b602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e491906151c8565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361181457600160009150915061183c565b6000806118218686610cf8565b50509150915060008265ffffffffffff161415819350935050505b9250929050565b61184b611cab565b61185582826131b7565b5050565b6000806118646122f3565b90506000611872858561237b565b9050600061188288888888611364565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036118f957806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016118f09190614909565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146119b35760006119396000856117e9565b509050600061195961195361194e8b8761105b565b610a15565b866117e9565b50905081158015611968575080155b156119b057848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016119a7949392919061527d565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611a596122f3565b90506000611a69828989896122fb565b91505060008163ffffffff16611a7d613310565b611a8791906152c2565b905060008263ffffffff161480611ac1575060008665ffffffffffff16118015611ac057508065ffffffffffff168665ffffffffffff16105b5b15611b10578289611ad28a8a61237b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b0793929190614e43565b60405180910390fd5b611b2a8665ffffffffffff168265ffffffffffff16613320565b9550611b38838a8a8a611364565b9450611b4385613339565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611c1c9594939291906152fc565b60405180910390a350505094509492505050565b611c386122f3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c9c576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ca68282612fcb565b505050565b6000611cb56122f3565b9050600080611ccb83611cc6612b99565b6133cb565b9150915081611d535760008163ffffffff1603611d37576000611cf4611cef612b99565b6134b9565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611d2e92919061534a565b60405180910390fd5b611d51611d4c8430611d47612b99565b611364565b6123a4565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611e609190615373565b60405180910390a3505050565b600080611e89836dffffffffffffffffffffffffffff16612a2b565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f0657816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611efd9190614e19565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611fa5919061482b565b60405180910390a25050565b611fb9611581565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d906153da565b60405180910390fd5b565b60008083806060019061203b91906150c9565b60009060049261204d93929190615050565b906120589190615412565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146120fc57806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016120f39190615373565b60405180910390fd5b600084806060019061210e91906150c9565b60049060249261212093929190615050565b81019061212d9190615471565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612194576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061219f856138a1565b9050600061220082888061010001906121b891906150c9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506138d7565b905061221d8188806060019061221691906150c9565b6000612ba6565b61222e57600194505050505061224e565b6122478188806060019061224291906150c9565b613903565b9450505050505b92915050565b50565b600081146122f05760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516122a7906154c4565b600060405180830381858888f193505050503d80600081146122e5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ea565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123455761233c8685856133cb565b91509150612372565b6004848490501061236957612364868661235f878761237b565b611607565b61236d565b6000805b915091505b94509492505050565b6000828260009060049261239193929190615050565b9061239c9190615412565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361244a57836040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016124419190614909565b60405180910390fd5b612452613310565b65ffffffffffff168265ffffffffffff1611156124a657836040517f18cb6b7a00000000000000000000000000000000000000000000000000000000815260040161249d9190614909565b60405180910390fd5b6124af82612b5d565b156124f157836040517f78a5d6e40000000000000000000000000000000000000000000000000000000081526004016124e89190614909565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b6000828260405160200161256f9291906154d9565b60405160208183030381529060405280519060200120905092915050565b6060814710156125d457306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016125cb9190614e19565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516125fd9190615502565b60006040518083038185875af1925050503d806000811461263a576040519150601f19603f3d011682016040523d82523d6000602084013e61263f565b606091505b509150915061264f8683836139b6565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff16036126b457846040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016126ab9190614189565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612872578463ffffffff16612756613310565b61276091906152c2565b905060405180604001604052808265ffffffffffff16815260200161278a8663ffffffff16613a45565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506129c1565b61291c846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612a1693929190615519565b60405180910390a38192505050949350505050565b6000806000612a4184612a3c613310565b613ae7565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612a84575067ffffffffffffffff80168267ffffffffffffffff16145b15612ac657816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612abd9190614189565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612b67613310565b65ffffffffffff16612b77610e6d565b63ffffffff1683612b8891906152c2565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612bd487308888600090600492612bc493929190615050565b90612bcf9190615412565b611607565b9150915081612c955760008163ffffffff161115612c1e576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612c8a5786612c4d308888600090600492612c3d93929190615050565b90612c489190615412565b61105b565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612c8192919061534a565b60405180910390fd5b600092505050612c9c565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612cda575067ffffffffffffffff80168267ffffffffffffffff16145b15612d1c57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612d139190614189565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612e0b57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612e029190614189565b60405180910390fd5b6000612e7d82612e19611753565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612f1d929190615550565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612f599190615502565b600060405180830381855af49150503d8060008114612f94576040519150601f19603f3d011682016040523d82523d6000602084013e612f99565b606091505b5091509150612fa98583836139b6565b9250505092915050565b6000612fbf838361255a565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361302557826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161301c9190614189565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036130ba57600090506131b1565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b6000613240826131c5611753565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051613303929190615550565b60405180910390a2505050565b600061331b42613b44565b905090565b600081831161332f5781613331565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015613385575061338381612b5d565b155b156133c757816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016133be9190614909565b60405180910390fd5b5050565b60008060048484905010156133e657600080915091506134b1565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036134375761342c30613427868661237b565b612fb3565b6000915091506134b1565b600080600061344687876134b9565b9250925092508261346057600080945094505050506134b1565b60008061346d848b6117e9565b9150915081613487576000809650965050505050506134b1565b61349d8363ffffffff168263ffffffff16613320565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156134da57600080600092509250925061389a565b60006134e6868661237b565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061357f57506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806135ce5750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061361d575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061366c575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156136825760016000809350935093505061389a565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613719575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061376857506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137b2576000868660049060249261378393929190615050565b8101906137909190615471565b9050600061379d82610eed565b9050600160008295509550955050505061389a565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613849575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561388d576000868660049060249261386493929190615050565b810190613871919061414d565b9050600161387e82611013565b6000945094509450505061389a565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b6000806000806138e78686613b9e565b9250925092506138f78282613bfa565b82935050505092915050565b6000806000848460049060048888905061391d9190615012565b9261392a93929190615050565b810190613937919061566b565b925050915060008061395d8885613958600087613d5e90919063ffffffff16565b611607565b915091508180613973575060008163ffffffff16145b156139925781613984576001613987565b60005b9450505050506139af565b6139a56139a0898686613dc5565b6123a4565b5060009450505050505b9392505050565b6060826139cb576139c682613dfb565b613a3d565b600082511480156139f3575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613a3557836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613a2c9190614e19565b60405180910390fd5b819050613a3e565b5b9392505050565b60008163ffffffff169050919050565b6000806000613a73866dffffffffffffffffffffffffffff16611e6d565b90506000613ab38563ffffffff168763ffffffff168463ffffffff1611613a9b576000613aa8565b8784613aa791906156da565b5b63ffffffff16613320565b90508063ffffffff16613ac4613310565b613ace91906152c2565b9250613adb828785613e40565b93505050935093915050565b600080600080600080613b09886dffffffffffffffffffffffffffff16613e8c565b9250925092508665ffffffffffff168165ffffffffffff161115613b2f57828282613b34565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613b96576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613b8d92919061575a565b60405180910390fd5b819050919050565b60008060006041845103613be35760008060006020870151925060408701519150606087015160001a9050613bd588828585613ece565b955095509550505050613bf3565b60006002855160001b9250925092505b9250925092565b60006003811115613c0e57613c0d615783565b5b826003811115613c2157613c20615783565b5b0315613d5a5760016003811115613c3b57613c3a615783565b5b826003811115613c4e57613c4d615783565b5b03613c85576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613c9957613c98615783565b5b826003811115613cac57613cab615783565b5b03613cf1578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613ce891906143a5565b60405180910390fd5b600380811115613d0457613d03615783565b5b826003811115613d1757613d16615783565b5b03613d5957806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613d509190614909565b60405180910390fd5b5b5050565b6000602082613d6d91906157b2565b83511015613db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da790615832565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613ddc9392919061588b565b6040516020818303038152906040528051906020012090509392505050565b600081511115613e0e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613f0e576000600385925092509250613fb8565b600060018888888860405160008152602001604052604051613f3394939291906158d8565b6020604051602081039080840390855afa158015613f55573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613fa957600060016000801b93509350935050613fb8565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061400182613fd6565b9050919050565b61401181613ff6565b811461401c57600080fd5b50565b60008135905061402e81614008565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261405957614058614034565b5b8235905067ffffffffffffffff81111561407657614075614039565b5b6020830191508360208202830111156140925761409161403e565b5b9250929050565b600067ffffffffffffffff82169050919050565b6140b681614099565b81146140c157600080fd5b50565b6000813590506140d3816140ad565b92915050565b600080600080606085870312156140f3576140f2613fcc565b5b60006141018782880161401f565b945050602085013567ffffffffffffffff81111561412257614121613fd1565b5b61412e87828801614043565b93509350506040614141878288016140c4565b91505092959194509250565b60006020828403121561416357614162613fcc565b5b6000614171848285016140c4565b91505092915050565b61418381614099565b82525050565b600060208201905061419e600083018461417a565b92915050565b600063ffffffff82169050919050565b6141bd816141a4565b82525050565b60006020820190506141d860008301846141b4565b92915050565b60008115159050919050565b6141f3816141de565b81146141fe57600080fd5b50565b600081359050614210816141ea565b92915050565b6000806040838503121561422d5761422c613fcc565b5b600061423b8582860161401f565b925050602061424c85828601614201565b9150509250929050565b6000806040838503121561426d5761426c613fcc565b5b600061427b8582860161401f565b925050602061428c8582860161401f565b9150509250929050565b600080fd5b600061012082840312156142b2576142b1614296565b5b81905092915050565b6000819050919050565b6142ce816142bb565b81146142d957600080fd5b50565b6000813590506142eb816142c5565b92915050565b6000819050919050565b614304816142f1565b811461430f57600080fd5b50565b600081359050614321816142fb565b92915050565b6000806000606084860312156143405761433f613fcc565b5b600084013567ffffffffffffffff81111561435e5761435d613fd1565b5b61436a8682870161429b565b935050602061437b868287016142dc565b925050604061438c86828701614312565b9150509250925092565b61439f816142f1565b82525050565b60006020820190506143ba6000830184614396565b92915050565b60008083601f8401126143d6576143d5614034565b5b8235905067ffffffffffffffff8111156143f3576143f2614039565b5b60208301915083600182028301111561440f5761440e61403e565b5b9250929050565b60008060006040848603121561442f5761442e613fcc565b5b600061443d8682870161401f565b935050602084013567ffffffffffffffff81111561445e5761445d613fd1565b5b61446a868287016143c0565b92509250509250925092565b61447f816141a4565b811461448a57600080fd5b50565b60008135905061449c81614476565b92915050565b6000806000606084860312156144bb576144ba613fcc565b5b60006144c9868287016140c4565b93505060206144da8682870161401f565b92505060406144eb8682870161448d565b9150509250925092565b6000806040838503121561450c5761450b613fcc565b5b600061451a858286016140c4565b925050602061452b8582860161401f565b9150509250929050565b600065ffffffffffff82169050919050565b61455081614535565b82525050565b600060808201905061456b6000830187614547565b61457860208301866141b4565b61458560408301856141b4565b6145926060830184614547565b95945050505050565b600080604083850312156145b2576145b1613fcc565b5b60006145c0858286016140c4565b92505060206145d1858286016140c4565b9150509250929050565b6000602082840312156145f1576145f0613fcc565b5b60006145ff848285016142dc565b91505092915050565b600060208201905061461d6000830184614547565b92915050565b60006020828403121561463957614638613fcc565b5b60006146478482850161401f565b91505092915050565b600061465b82613fd6565b9050919050565b61466b81614650565b811461467657600080fd5b50565b60008135905061468881614662565b92915050565b600080604083850312156146a5576146a4613fcc565b5b60006146b385828601614679565b92505060206146c485828601614312565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614703816146ce565b811461470e57600080fd5b50565b600081359050614720816146fa565b92915050565b6000806040838503121561473d5761473c613fcc565b5b600061474b8582860161401f565b925050602061475c85828601614711565b9150509250929050565b60008083601f84011261477c5761477b614034565b5b8235905067ffffffffffffffff81111561479957614798614039565b5b6020830191508360018202830111156147b5576147b461403e565b5b9250929050565b6000806000604084860312156147d5576147d4613fcc565b5b60006147e3868287016140c4565b935050602084013567ffffffffffffffff81111561480457614803613fd1565b5b61481086828701614766565b92509250509250925092565b614825816141de565b82525050565b6000602082019050614840600083018461481c565b92915050565b6000806040838503121561485d5761485c613fcc565b5b600061486b858286016140c4565b925050602061487c8582860161448d565b9150509250929050565b600080600080606085870312156148a05761489f613fcc565b5b60006148ae8782880161401f565b94505060206148bf8782880161401f565b935050604085013567ffffffffffffffff8111156148e0576148df613fd1565b5b6148ec878288016143c0565b925092505092959194509250565b614903816142bb565b82525050565b600060208201905061491e60008301846148fa565b92915050565b60008083601f84011261493a57614939614034565b5b8235905067ffffffffffffffff81111561495757614956614039565b5b6020830191508360208202830111156149735761497261403e565b5b9250929050565b6000806020838503121561499157614990613fcc565b5b600083013567ffffffffffffffff8111156149af576149ae613fd1565b5b6149bb85828601614924565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a2d578082015181840152602081019050614a12565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a55826149f3565b614a5f81856149fe565b9350614a6f818560208601614a0f565b614a7881614a39565b840191505092915050565b6000614a8f8383614a4a565b905092915050565b6000602082019050919050565b6000614aaf826149c7565b614ab981856149d2565b935083602082028501614acb856149e3565b8060005b85811015614b075784840389528151614ae88582614a83565b9450614af383614a97565b925060208a01995050600181019050614acf565b50829750879550505050505092915050565b60006020820190508181036000830152614b338184614aa4565b905092915050565b6000819050919050565b6000614b60614b5b614b5684613fd6565b614b3b565b613fd6565b9050919050565b6000614b7282614b45565b9050919050565b6000614b8482614b67565b9050919050565b614b9481614b79565b82525050565b6000602082019050614baf6000830184614b8b565b92915050565b60008060008060608587031215614bcf57614bce613fcc565b5b6000614bdd8782880161401f565b9450506020614bee87828801614312565b935050604085013567ffffffffffffffff811115614c0f57614c0e613fd1565b5b614c1b878288016143c0565b925092505092959194509250565b600080600060608486031215614c4257614c41613fcc565b5b6000614c508682870161401f565b9350506020614c618682870161401f565b9250506040614c7286828701614711565b9150509250925092565b6000604082019050614c91600083018561481c565b614c9e60208301846141b4565b9392505050565b60008060408385031215614cbc57614cbb613fcc565b5b6000614cca8582860161401f565b9250506020614cdb8582860161448d565b9150509250929050565b614cee81614535565b8114614cf957600080fd5b50565b600081359050614d0b81614ce5565b92915050565b60008060008060608587031215614d2b57614d2a613fcc565b5b6000614d398782880161401f565b945050602085013567ffffffffffffffff811115614d5a57614d59613fd1565b5b614d66878288016143c0565b93509350506040614d7987828801614cfc565b91505092959194509250565b6000604082019050614d9a60008301856148fa565b614da760208301846141b4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614df357614df2613fcc565b5b6000614e0184828501614711565b91505092915050565b614e1381613ff6565b82525050565b6000602082019050614e2e6000830184614e0a565b92915050565b614e3d816146ce565b82525050565b6000606082019050614e586000830186614e0a565b614e656020830185614e0a565b614e726040830184614e34565b949350505050565b614e8381614650565b82525050565b6000604082019050614e9e6000830185614e7a565b614eab6020830184614396565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000614ede8385614eb2565b9350614eeb838584614ec3565b614ef483614a39565b840190509392505050565b60006020820190508181036000830152614f1a818486614ed2565b90509392505050565b600081519050614f32816146fa565b92915050565b600060208284031215614f4e57614f4d613fcc565b5b6000614f5c84828501614f23565b91505092915050565b600082825260208201905092915050565b6000614f828385614f65565b9350614f8f838584614ec3565b614f9883614a39565b840190509392505050565b6000606082019050614fb86000830187614e0a565b614fc56020830186614e0a565b8181036040830152614fd8818486614f76565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061501d826142f1565b9150615028836142f1565b92508282039050818111156150405761503f614fe3565b5b92915050565b600080fd5b600080fd5b6000808585111561506457615063615046565b5b838611156150755761507461504b565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126150e6576150e56150ba565b5b80840192508235915067ffffffffffffffff821115615108576151076150bf565b5b602083019250600182023603831315615124576151236150c4565b5b509250929050565b600081905092915050565b6000615143838561512c565b9350615150838584614ec3565b82840190509392505050565b6000615167826149f3565b615171818561512c565b9350615181818560208601614a0f565b80840191505092915050565b600061519a828587615137565b91506151a6828461515c565b9150819050949350505050565b6000815190506151c2816142fb565b92915050565b6000602082840312156151de576151dd613fcc565b5b60006151ec848285016151b3565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061523e615239615234846151f5565b614b3b565b6151ff565b9050919050565b61524e81615223565b82525050565b60006040820190506152696000830185614e0a565b6152766020830184615245565b9392505050565b60006080820190506152926000830187614e0a565b61529f6020830186614e0a565b6152ac6040830185614e0a565b6152b96060830184614e34565b95945050505050565b60006152cd82614535565b91506152d883614535565b9250828201905065ffffffffffff8111156152f6576152f5614fe3565b5b92915050565b60006080820190506153116000830188614547565b61531e6020830187614e0a565b61532b6040830186614e0a565b818103606083015261533e818486614f76565b90509695505050505050565b600060408201905061535f6000830185614e0a565b61536c602083018461417a565b9392505050565b60006020820190506153886000830184614e34565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b60006153c4601c83614eb2565b91506153cf8261538e565b602082019050919050565b600060208201905081810360008301526153f3816153b7565b9050919050565b600082905092915050565b600082821b905092915050565b600061541e83836153fa565b8261542981356146ce565b92506004821015615469576154647fffffffff0000000000000000000000000000000000000000000000000000000083600403600802615405565b831692505b505092915050565b60006020828403121561548757615486613fcc565b5b600061549584828501614679565b91505092915050565b50565b60006154ae60008361512c565b91506154b98261549e565b600082019050919050565b60006154cf826154a1565b9150819050919050565b60006040820190506154ee6000830185614e0a565b6154fb6020830184614e34565b9392505050565b600061550e828461515c565b915081905092915050565b600060608201905061552e60008301866141b4565b61553b6020830185614547565b615548604083018461481c565b949350505050565b600060408201905061556560008301856141b4565b6155726020830184614547565b9392505050565b600080fd5b61558782614a39565b810181811067ffffffffffffffff821117156155a6576155a561508b565b5b80604052505050565b60006155b9613fc2565b90506155c5828261557e565b919050565b600067ffffffffffffffff8211156155e5576155e461508b565b5b6155ee82614a39565b9050602081019050919050565b600061560e615609846155ca565b6155af565b90508281526020810184848401111561562a57615629615579565b5b615635848285614ec3565b509392505050565b600082601f83011261565257615651614034565b5b81356156628482602086016155fb565b91505092915050565b60008060006060848603121561568457615683613fcc565b5b600061569286828701614679565b93505060206156a386828701614312565b925050604084013567ffffffffffffffff8111156156c4576156c3613fd1565b5b6156d08682870161563d565b9150509250925092565b60006156e5826141a4565b91506156f0836141a4565b9250828203905063ffffffff81111561570c5761570b614fe3565b5b92915050565b6000819050919050565b600060ff82169050919050565b600061574461573f61573a84615712565b614b3b565b61571c565b9050919050565b61575481615729565b82525050565b600060408201905061576f600083018561574b565b61577c6020830184614396565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006157bd826142f1565b91506157c8836142f1565b92508282019050808211156157e0576157df614fe3565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b600061581c601583614eb2565b9150615827826157e6565b602082019050919050565b6000602082019050818103600083015261584b8161580f565b9050919050565b600061585d826149f3565b6158678185614f65565b9350615877818560208601614a0f565b61588081614a39565b840191505092915050565b60006060820190506158a06000830186614e0a565b6158ad6020830185614e0a565b81810360408301526158bf8184615852565b9050949350505050565b6158d28161571c565b82525050565b60006080820190506158ed60008301876148fa565b6158fa60208301866158c9565b61590760408301856148fa565b61591460608301846148fa565b9594505050505056fea2646970667358221220fbf9e2d65e12d5ce07a97dda723ca0b4f89711b1434a8e9178e53246af61098c64736f6c63430008180033",
|
|
1398
|
+
"deployedBytecode": "0x6080604052600436106102345760003560e01c80636d5115bd1161012e578063b7009613116100ab578063d1f856ee1161006f578063d1f856ee146108b0578063d22b5989146108ee578063d6bb62c614610917578063f801a69814610954578063fe0776f5146109925761023b565b8063b7009613146107c8578063b7d2b16214610806578063c399ec881461082f578063cc1b6c811461085a578063d087d288146108855761023b565b8063a64d95ce116100f2578063a64d95ce146106d1578063abd9bd2a146106fa578063ac9650d814610737578063b0d691fe14610774578063b61d27f61461079f5761023b565b80636d5115bd146105da57806375b238fc14610617578063853551b81461064257806394c7d7ee1461066b578063a166aa89146106945761023b565b806330cae187116101bc5780634a58db19116101805780634a58db19146105045780634c1da1e21461050e5780634d44560d1461054b5780635296295214610574578063530dd4561461059d5761023b565b806330cae1871461040b5780633adc277a146104345780633ca7c02a146104715780634136a33c1461049c5780634665096d146104d95761023b565b806318ff183c1161020357806318ff183c1461030c57806319822f7c146103355780631cff79cd1461037257806325c471a0146103a25780633078f114146103cb5761023b565b806308d6122d146102405780630b0a93ba1461026957806312be8727146102a6578063167bd395146102e35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906140d9565b6109bb565b005b34801561027557600080fd5b50610290600480360381019061028b919061414d565b610a15565b60405161029d9190614189565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c8919061414d565b610a5d565b6040516102da91906141c3565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190614216565b610ac3565b005b34801561031857600080fd5b50610333600480360381019061032e9190614256565b610ad9565b005b34801561034157600080fd5b5061035c60048036038101906103579190614327565b610b50565b60405161036991906143a5565b60405180910390f35b61038c60048036038101906103879190614416565b610b83565b60405161039991906141c3565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906144a2565b610cd6565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906144f5565b610cf8565b6040516104029493929190614556565b60405180910390f35b34801561041757600080fd5b50610432600480360381019061042d919061459b565b610dcf565b005b34801561044057600080fd5b5061045b600480360381019061045691906145db565b610de5565b6040516104689190614608565b60405180910390f35b34801561047d57600080fd5b50610486610e31565b6040516104939190614189565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be91906145db565b610e3d565b6040516104d091906141c3565b60405180910390f35b3480156104e557600080fd5b506104ee610e6d565b6040516104fb91906141c3565b60405180910390f35b61050c610e78565b005b34801561051a57600080fd5b5061053560048036038101906105309190614623565b610eed565b60405161054291906141c3565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d919061468e565b610f6a565b005b34801561058057600080fd5b5061059b6004803603810190610596919061459b565b610ffd565b005b3480156105a957600080fd5b506105c460048036038101906105bf919061414d565b611013565b6040516105d19190614189565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190614726565b61105b565b60405161060e9190614189565b60405180910390f35b34801561062357600080fd5b5061062c61110a565b6040516106399190614189565b60405180910390f35b34801561064e57600080fd5b50610669600480360381019061066491906147bc565b61110f565b005b34801561067757600080fd5b50610692600480360381019061068d9190614416565b6111d8565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190614623565b6112f6565b6040516106c8919061482b565b60405180910390f35b3480156106dd57600080fd5b506106f860048036038101906106f39190614846565b61134e565b005b34801561070657600080fd5b50610721600480360381019061071c9190614886565b611364565b60405161072e9190614909565b60405180910390f35b34801561074357600080fd5b5061075e6004803603810190610759919061497a565b61139d565b60405161076b9190614b19565b60405180910390f35b34801561078057600080fd5b50610789611581565b6040516107969190614b9a565b60405180910390f35b3480156107ab57600080fd5b506107c660048036038101906107c19190614bb5565b6115a9565b005b3480156107d457600080fd5b506107ef60048036038101906107ea9190614c29565b611607565b6040516107fd929190614c7c565b60405180910390f35b34801561081257600080fd5b5061082d600480360381019061082891906144f5565b6116b4565b005b34801561083b57600080fd5b506108446116cb565b60405161085191906143a5565b60405180910390f35b34801561086657600080fd5b5061086f611753565b60405161087c91906141c3565b60405180910390f35b34801561089157600080fd5b5061089a61175e565b6040516108a791906143a5565b60405180910390f35b3480156108bc57600080fd5b506108d760048036038101906108d291906144f5565b6117e9565b6040516108e5929190614c7c565b60405180910390f35b3480156108fa57600080fd5b5061091560048036038101906109109190614ca5565b611843565b005b34801561092357600080fd5b5061093e60048036038101906109399190614886565b611859565b60405161094b91906141c3565b60405180910390f35b34801561096057600080fd5b5061097b60048036038101906109769190614d11565b611a4c565b604051610989929190614d85565b60405180910390f35b34801561099e57600080fd5b506109b960048036038101906109b491906144f5565b611c30565b005b6109c3611cab565b60005b83839050811015610a0e57610a03858585848181106109e8576109e7614dae565b5b90506020020160208101906109fd9190614ddd565b84611d58565b8060010190506109c6565b5050505050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160089054906101000a900467ffffffffffffffff169050919050565b6000610abc600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e6d565b9050919050565b610acb611cab565b610ad58282611e96565b5050565b610ae1611cab565b8173ffffffffffffffffffffffffffffffffffffffff16637a9e5e4b826040518263ffffffff1660e01b8152600401610b1a9190614e19565b600060405180830381600087803b158015610b3457600080fd5b505af1158015610b48573d6000803e3d6000fd5b505050505050565b6000610b5a611fb1565b610b648484612028565b9050610b738460200135612254565b610b7c82612257565b9392505050565b600080610b8e6122f3565b9050600080610b9f838888886122fb565b9150915081158015610bb7575060008163ffffffff16145b15610c06578287610bc8888861237b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401610bfd93929190614e43565b60405180910390fd5b6000610c1484898989611364565b90506000808363ffffffff16141580610c3e57506000610c3383610de5565b65ffffffffffff1614155b15610c4f57610c4c826123a4565b90505b60006003549050610c698a610c648b8b61237b565b61255a565b600381905550610cbe8a8a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503461258d565b50806003819055508196505050505050509392505050565b610cde611cab565b610cf28383610cec86610a5d565b8461265a565b50505050565b6000806000806000600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900465ffffffffffff169450610db98160000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a2b565b8094508195508296505050505092959194509250565b610dd7611cab565b610de18282612a4e565b5050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff169050610e1c81612b5d565b610e265780610e29565b60005b915050919050565b67ffffffffffffffff81565b60006002600083815260200190815260200160002060000160069054906101000a900463ffffffff169050919050565b600062093a80905090565b610e80611581565b73ffffffffffffffffffffffffffffffffffffffff1663b760faf934306040518363ffffffff1660e01b8152600401610eb99190614e19565b6000604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b5050505050565b6000610f636000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16611e6d565b9050919050565b610f84610f756122f3565b610f7d612b99565b6001612ba6565b50610f8d611581565b73ffffffffffffffffffffffffffffffffffffffff1663205c287883836040518363ffffffff1660e01b8152600401610fc7929190614e89565b600060405180830381600087803b158015610fe157600080fd5b505af1158015610ff5573d6000803e3d6000fd5b505050505050565b611005611cab565b61100f8282612ca4565b5050565b6000600160008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160009054906101000a900467ffffffffffffffff169050919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900467ffffffffffffffff16905092915050565b600081565b611117611cab565b600067ffffffffffffffff168367ffffffffffffffff16148061114d575067ffffffffffffffff80168367ffffffffffffffff16145b1561118f57826040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016111869190614189565b60405180910390fd5b8267ffffffffffffffff167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a45083836040516111cb929190614eff565b60405180910390a2505050565b60006111e26122f3565b9050638fb3603760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff16638fb360376040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127a9190614f38565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112db57806040517f320ff7480000000000000000000000000000000000000000000000000000000081526004016112d29190614e19565b60405180910390fd5b6112ef6112ea85838686611364565b6123a4565b5050505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e9054906101000a900460ff169050919050565b611356611cab565b6113608282612db3565b5050565b60008484848460405160200161137d9493929190614fa3565b604051602081830303815290604052805190602001209050949350505050565b606060006113a96122f3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144c576000366113e6612f2a565b60003690506113f59190615012565b90809261140493929190615050565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061149b565b600067ffffffffffffffff8111156114675761146661508b565b5b6040519080825280601f01601f1916602001820160405280156114995781602001600182028036833780820191505090505b505b90508383905067ffffffffffffffff8111156114ba576114b961508b565b5b6040519080825280602002602001820160405280156114ed57816020015b60608152602001906001900390816114d85790505b50915060005b848490508110156115795761154e3086868481811061151557611514614dae565b5b905060200281019061152791906150c9565b8560405160200161153a9392919061518d565b604051602081830303815290604052612f2f565b83828151811061156157611560614dae565b5b602002602001018190525080806001019150506114f3565b505092915050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6115b1611fb1565b6116008483838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508561258d565b5050505050565b600080611613846112f6565b1561162457600080915091506116ac565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361166c576116618484612fb3565b6000915091506116ac565b6000611678858561105b565b905060008061168783896117e9565b9150915081611698576000806116a4565b60008163ffffffff1614815b945094505050505b935093915050565b6116bc611cab565b6116c68282612fcb565b505050565b60006116d5611581565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161170d9190614e19565b602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e91906151c8565b905090565b600062069780905090565b6000611768611581565b73ffffffffffffffffffffffffffffffffffffffff166335567e1a3060006040518363ffffffff1660e01b81526004016117a3929190615254565b602060405180830381865afa1580156117c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e491906151c8565b905090565b60008067ffffffffffffffff80168467ffffffffffffffff160361181457600160009150915061183c565b6000806118218686610cf8565b50509150915060008265ffffffffffff161415819350935050505b9250929050565b61184b611cab565b61185582826131b7565b5050565b6000806118646122f3565b90506000611872858561237b565b9050600061188288888888611364565b905060006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036118f957806040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016118f09190614909565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146119b35760006119396000856117e9565b509050600061195961195361194e8b8761105b565b610a15565b866117e9565b50905081158015611968575080155b156119b057848a8a866040517f3fe2751c0000000000000000000000000000000000000000000000000000000081526004016119a7949392919061527d565b60405180910390fd5b50505b6002600082815260200190815260200160002060000160006101000a81549065ffffffffffff021916905560006002600083815260200190815260200160002060000160069054906101000a900463ffffffff1690508063ffffffff16827fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f760405160405180910390a380945050505050949350505050565b6000806000611a596122f3565b90506000611a69828989896122fb565b91505060008163ffffffff16611a7d613310565b611a8791906152c2565b905060008263ffffffff161480611ac1575060008665ffffffffffff16118015611ac057508065ffffffffffff168665ffffffffffff16105b5b15611b10578289611ad28a8a61237b565b6040517f81c6f24b000000000000000000000000000000000000000000000000000000008152600401611b0793929190614e43565b60405180910390fd5b611b2a8665ffffffffffff168265ffffffffffff16613320565b9550611b38838a8a8a611364565b9450611b4385613339565b60016002600087815260200190815260200160002060000160069054906101000a900463ffffffff16019350856002600087815260200190815260200160002060000160006101000a81548165ffffffffffff021916908365ffffffffffff160217905550836002600087815260200190815260200160002060000160066101000a81548163ffffffff021916908363ffffffff1602179055508363ffffffff16857f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b488868d8d8d604051611c1c9594939291906152fc565b60405180910390a350505094509492505050565b611c386122f3565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c9c576040517f5f159e6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ca68282612fcb565b505050565b6000611cb56122f3565b9050600080611ccb83611cc6612b99565b6133cb565b9150915081611d535760008163ffffffff1603611d37576000611cf4611cef612b99565b6134b9565b5091505083816040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401611d2e92919061534a565b60405180910390fd5b611d51611d4c8430611d47612b99565b611364565b6123a4565b505b505050565b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde94915184604051611e609190615373565b60405180910390a3505050565b600080611e89836dffffffffffffffffffffffffffff16612a2b565b5050905080915050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f0657816040517f5a068bc8000000000000000000000000000000000000000000000000000000008152600401611efd9190614e19565b60405180910390fd5b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600e6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb13882604051611fa5919061482b565b60405180910390a25050565b611fb9611581565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201d906153da565b60405180910390fd5b565b60008083806060019061203b91906150c9565b60009060049261204d93929190615050565b906120589190615412565b90507fb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b8377bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146120fc57806040517fd4d202fb0000000000000000000000000000000000000000000000000000000081526004016120f39190615373565b60405180910390fd5b600084806060019061210e91906150c9565b60049060249261212093929190615050565b81019061212d9190615471565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612194576040517ffcd888ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061219f856138a1565b9050600061220082888061010001906121b891906150c9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506138d7565b905061221d8188806060019061221691906150c9565b6000612ba6565b61222e57600194505050505061224e565b6122478188806060019061224291906150c9565b613903565b9450505050505b92915050565b50565b600081146122f05760003373ffffffffffffffffffffffffffffffffffffffff16827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906040516122a7906154c4565b600060405180830381858888f193505050503d80600081146122e5576040519150601f19603f3d011682016040523d82523d6000602084013e6122ea565b606091505b50509050505b50565b600033905090565b6000803073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123455761233c8685856133cb565b91509150612372565b6004848490501061236957612364868661235f878761237b565b611607565b61236d565b6000805b915091505b94509492505050565b6000828260009060049261239193929190615050565b9061239c9190615412565b905092915050565b6000806002600084815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060006002600085815260200190815260200160002060000160069054906101000a900463ffffffff16905060008265ffffffffffff160361244a57836040517f60a299b00000000000000000000000000000000000000000000000000000000081526004016124419190614909565b60405180910390fd5b612452613310565b65ffffffffffff168265ffffffffffff1611156124a657836040517f18cb6b7a00000000000000000000000000000000000000000000000000000000815260040161249d9190614909565b60405180910390fd5b6124af82612b5d565b156124f157836040517f78a5d6e40000000000000000000000000000000000000000000000000000000081526004016124e89190614909565b60405180910390fd5b6002600085815260200190815260200160002060000160006101000a81549065ffffffffffff02191690558063ffffffff16847f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d60405160405180910390a38092505050919050565b6000828260405160200161256f9291906154d9565b60405160208183030381529060405280519060200120905092915050565b6060814710156125d457306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016125cb9190614e19565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516125fd9190615502565b60006040518083038185875af1925050503d806000811461263a576040519150601f19603f3d011682016040523d82523d6000602084013e61263f565b606091505b509150915061264f8683836139b6565b925050509392505050565b600067ffffffffffffffff80168567ffffffffffffffff16036126b457846040517f1871a90c0000000000000000000000000000000000000000000000000000000081526004016126ab9190614189565b60405180910390fd5b600080600160008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff1614905060008115612872578463ffffffff16612756613310565b61276091906152c2565b905060405180604001604052808265ffffffffffff16815260200161278a8663ffffffff16613a45565b6dffffffffffffffffffffffffffff16815250600160008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055509050506129c1565b61291c846000600160008b67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160069054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b600160008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160068294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050505b8573ffffffffffffffffffffffffffffffffffffffff168767ffffffffffffffff167ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf868486604051612a1693929190615519565b60405180910390a38192505050949350505050565b6000806000612a4184612a3c613310565b613ae7565b9250925092509193909250565b600067ffffffffffffffff168267ffffffffffffffff161480612a84575067ffffffffffffffff80168267ffffffffffffffff16145b15612ac657816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612abd9190614189565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e634060405160405180910390a35050565b6000612b67613310565b65ffffffffffff16612b77610e6d565b63ffffffff1683612b8891906152c2565b65ffffffffffff1611159050919050565b3660008036915091509091565b6000806000612bd487308888600090600492612bc493929190615050565b90612bcf9190615412565b611607565b9150915081612c955760008163ffffffff161115612c1e576040517f99ec076b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8315612c8a5786612c4d308888600090600492612c3d93929190615050565b90612c489190615412565b61105b565b6040517ff07e038f000000000000000000000000000000000000000000000000000000008152600401612c8192919061534a565b60405180910390fd5b600092505050612c9c565b6001925050505b949350505050565b600067ffffffffffffffff168267ffffffffffffffff161480612cda575067ffffffffffffffff80168267ffffffffffffffff16145b15612d1c57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612d139190614189565b60405180910390fd5b80600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff168267ffffffffffffffff167f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae260405160405180910390a35050565b67ffffffffffffffff80168267ffffffffffffffff1603612e0b57816040517f1871a90c000000000000000000000000000000000000000000000000000000008152600401612e029190614189565b60405180910390fd5b6000612e7d82612e19611753565b600160008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160109054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b600160008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060010160108294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508267ffffffffffffffff167ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b488383604051612f1d929190615550565b60405180910390a2505050565b600090565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612f599190615502565b600060405180830381855af49150503d8060008114612f94576040519150601f19603f3d011682016040523d82523d6000602084013e612f99565b606091505b5091509150612fa98583836139b6565b9250505092915050565b6000612fbf838361255a565b60035414905092915050565b600067ffffffffffffffff80168367ffffffffffffffff160361302557826040517f1871a90c00000000000000000000000000000000000000000000000000000000815260040161301c9190614189565b60405180910390fd5b6000600160008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900465ffffffffffff1665ffffffffffff16036130ba57600090506131b1565b600160008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549065ffffffffffff02191690556000820160066101000a8154906dffffffffffffffffffffffffffff021916905550508173ffffffffffffffffffffffffffffffffffffffff168367ffffffffffffffff167ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16660405160405180910390a3600190505b92915050565b6000613240826131c5611753565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16613a559092919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008294508391906101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff16021790555050508273ffffffffffffffffffffffffffffffffffffffff167fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c8383604051613303929190615550565b60405180910390a2505050565b600061331b42613b44565b905090565b600081831161332f5781613331565b825b905092915050565b60006002600083815260200190815260200160002060000160009054906101000a900465ffffffffffff16905060008165ffffffffffff1614158015613385575061338381612b5d565b155b156133c757816040517f813e94590000000000000000000000000000000000000000000000000000000081526004016133be9190614909565b60405180910390fd5b5050565b60008060048484905010156133e657600080915091506134b1565b3073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036134375761342c30613427868661237b565b612fb3565b6000915091506134b1565b600080600061344687876134b9565b9250925092508261346057600080945094505050506134b1565b60008061346d848b6117e9565b9150915081613487576000809650965050505050506134b1565b61349d8363ffffffff168263ffffffff16613320565b955060008663ffffffff1614965050505050505b935093915050565b600080600060048585905010156134da57600080600092509250925061389a565b60006134e6868661237b565b905063853551b860e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061357f57506330cae18760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806135ce5750635296295260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061361d575063a64d95ce60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061366c575063d22b598960e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156136825760016000809350935093505061389a565b6318ff183c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613719575063167bd39560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061376857506308d6122d60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156137b2576000868660049060249261378393929190615050565b8101906137909190615471565b9050600061379d82610eed565b9050600160008295509550955050505061389a565b6325c471a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480613849575063b7d2b16260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b1561388d576000868660049060249261386493929190615050565b810190613871919061414d565b9050600161387e82611013565b6000945094509450505061389a565b6000806000935093509350505b9250925092565b60007f19457468657265756d205369676e6564204d6573736167653a0a33320000000060005281601c52603c6000209050919050565b6000806000806138e78686613b9e565b9250925092506138f78282613bfa565b82935050505092915050565b6000806000848460049060048888905061391d9190615012565b9261392a93929190615050565b810190613937919061566b565b925050915060008061395d8885613958600087613d5e90919063ffffffff16565b611607565b915091508180613973575060008163ffffffff16145b156139925781613984576001613987565b60005b9450505050506139af565b6139a56139a0898686613dc5565b6123a4565b5060009450505050505b9392505050565b6060826139cb576139c682613dfb565b613a3d565b600082511480156139f3575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15613a3557836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401613a2c9190614e19565b60405180910390fd5b819050613a3e565b5b9392505050565b60008163ffffffff169050919050565b6000806000613a73866dffffffffffffffffffffffffffff16611e6d565b90506000613ab38563ffffffff168763ffffffff168463ffffffff1611613a9b576000613aa8565b8784613aa791906156da565b5b63ffffffff16613320565b90508063ffffffff16613ac4613310565b613ace91906152c2565b9250613adb828785613e40565b93505050935093915050565b600080600080600080613b09886dffffffffffffffffffffffffffff16613e8c565b9250925092508665ffffffffffff168165ffffffffffff161115613b2f57828282613b34565b816000805b9550955095505050509250925092565b600065ffffffffffff8016821115613b96576030826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401613b8d92919061575a565b60405180910390fd5b819050919050565b60008060006041845103613be35760008060006020870151925060408701519150606087015160001a9050613bd588828585613ece565b955095509550505050613bf3565b60006002855160001b9250925092505b9250925092565b60006003811115613c0e57613c0d615783565b5b826003811115613c2157613c20615783565b5b0315613d5a5760016003811115613c3b57613c3a615783565b5b826003811115613c4e57613c4d615783565b5b03613c85576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115613c9957613c98615783565b5b826003811115613cac57613cab615783565b5b03613cf1578060001c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401613ce891906143a5565b60405180910390fd5b600380811115613d0457613d03615783565b5b826003811115613d1757613d16615783565b5b03613d5957806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401613d509190614909565b60405180910390fd5b5b5050565b6000602082613d6d91906157b2565b83511015613db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da790615832565b60405180910390fd5b60008260208501015190508091505092915050565b6000838383604051602001613ddc9392919061588b565b6040516020818303038152906040528051906020012090509392505050565b600081511115613e0e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008263ffffffff1660208563ffffffff166dffffffffffffffffffffffffffff16901b60408465ffffffffffff166dffffffffffffffffffffffffffff16901b171790509392505050565b6000806000808490508092506020816dffffffffffffffffffffffffffff16901c93506040816dffffffffffffffffffffffffffff16901c9150509193909250565b60008060007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c1115613f0e576000600385925092509250613fb8565b600060018888888860405160008152602001604052604051613f3394939291906158d8565b6020604051602081039080840390855afa158015613f55573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613fa957600060016000801b93509350935050613fb8565b8060008060001b935093509350505b9450945094915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061400182613fd6565b9050919050565b61401181613ff6565b811461401c57600080fd5b50565b60008135905061402e81614008565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261405957614058614034565b5b8235905067ffffffffffffffff81111561407657614075614039565b5b6020830191508360208202830111156140925761409161403e565b5b9250929050565b600067ffffffffffffffff82169050919050565b6140b681614099565b81146140c157600080fd5b50565b6000813590506140d3816140ad565b92915050565b600080600080606085870312156140f3576140f2613fcc565b5b60006141018782880161401f565b945050602085013567ffffffffffffffff81111561412257614121613fd1565b5b61412e87828801614043565b93509350506040614141878288016140c4565b91505092959194509250565b60006020828403121561416357614162613fcc565b5b6000614171848285016140c4565b91505092915050565b61418381614099565b82525050565b600060208201905061419e600083018461417a565b92915050565b600063ffffffff82169050919050565b6141bd816141a4565b82525050565b60006020820190506141d860008301846141b4565b92915050565b60008115159050919050565b6141f3816141de565b81146141fe57600080fd5b50565b600081359050614210816141ea565b92915050565b6000806040838503121561422d5761422c613fcc565b5b600061423b8582860161401f565b925050602061424c85828601614201565b9150509250929050565b6000806040838503121561426d5761426c613fcc565b5b600061427b8582860161401f565b925050602061428c8582860161401f565b9150509250929050565b600080fd5b600061012082840312156142b2576142b1614296565b5b81905092915050565b6000819050919050565b6142ce816142bb565b81146142d957600080fd5b50565b6000813590506142eb816142c5565b92915050565b6000819050919050565b614304816142f1565b811461430f57600080fd5b50565b600081359050614321816142fb565b92915050565b6000806000606084860312156143405761433f613fcc565b5b600084013567ffffffffffffffff81111561435e5761435d613fd1565b5b61436a8682870161429b565b935050602061437b868287016142dc565b925050604061438c86828701614312565b9150509250925092565b61439f816142f1565b82525050565b60006020820190506143ba6000830184614396565b92915050565b60008083601f8401126143d6576143d5614034565b5b8235905067ffffffffffffffff8111156143f3576143f2614039565b5b60208301915083600182028301111561440f5761440e61403e565b5b9250929050565b60008060006040848603121561442f5761442e613fcc565b5b600061443d8682870161401f565b935050602084013567ffffffffffffffff81111561445e5761445d613fd1565b5b61446a868287016143c0565b92509250509250925092565b61447f816141a4565b811461448a57600080fd5b50565b60008135905061449c81614476565b92915050565b6000806000606084860312156144bb576144ba613fcc565b5b60006144c9868287016140c4565b93505060206144da8682870161401f565b92505060406144eb8682870161448d565b9150509250925092565b6000806040838503121561450c5761450b613fcc565b5b600061451a858286016140c4565b925050602061452b8582860161401f565b9150509250929050565b600065ffffffffffff82169050919050565b61455081614535565b82525050565b600060808201905061456b6000830187614547565b61457860208301866141b4565b61458560408301856141b4565b6145926060830184614547565b95945050505050565b600080604083850312156145b2576145b1613fcc565b5b60006145c0858286016140c4565b92505060206145d1858286016140c4565b9150509250929050565b6000602082840312156145f1576145f0613fcc565b5b60006145ff848285016142dc565b91505092915050565b600060208201905061461d6000830184614547565b92915050565b60006020828403121561463957614638613fcc565b5b60006146478482850161401f565b91505092915050565b600061465b82613fd6565b9050919050565b61466b81614650565b811461467657600080fd5b50565b60008135905061468881614662565b92915050565b600080604083850312156146a5576146a4613fcc565b5b60006146b385828601614679565b92505060206146c485828601614312565b9150509250929050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614703816146ce565b811461470e57600080fd5b50565b600081359050614720816146fa565b92915050565b6000806040838503121561473d5761473c613fcc565b5b600061474b8582860161401f565b925050602061475c85828601614711565b9150509250929050565b60008083601f84011261477c5761477b614034565b5b8235905067ffffffffffffffff81111561479957614798614039565b5b6020830191508360018202830111156147b5576147b461403e565b5b9250929050565b6000806000604084860312156147d5576147d4613fcc565b5b60006147e3868287016140c4565b935050602084013567ffffffffffffffff81111561480457614803613fd1565b5b61481086828701614766565b92509250509250925092565b614825816141de565b82525050565b6000602082019050614840600083018461481c565b92915050565b6000806040838503121561485d5761485c613fcc565b5b600061486b858286016140c4565b925050602061487c8582860161448d565b9150509250929050565b600080600080606085870312156148a05761489f613fcc565b5b60006148ae8782880161401f565b94505060206148bf8782880161401f565b935050604085013567ffffffffffffffff8111156148e0576148df613fd1565b5b6148ec878288016143c0565b925092505092959194509250565b614903816142bb565b82525050565b600060208201905061491e60008301846148fa565b92915050565b60008083601f84011261493a57614939614034565b5b8235905067ffffffffffffffff81111561495757614956614039565b5b6020830191508360208202830111156149735761497261403e565b5b9250929050565b6000806020838503121561499157614990613fcc565b5b600083013567ffffffffffffffff8111156149af576149ae613fd1565b5b6149bb85828601614924565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a2d578082015181840152602081019050614a12565b60008484015250505050565b6000601f19601f8301169050919050565b6000614a55826149f3565b614a5f81856149fe565b9350614a6f818560208601614a0f565b614a7881614a39565b840191505092915050565b6000614a8f8383614a4a565b905092915050565b6000602082019050919050565b6000614aaf826149c7565b614ab981856149d2565b935083602082028501614acb856149e3565b8060005b85811015614b075784840389528151614ae88582614a83565b9450614af383614a97565b925060208a01995050600181019050614acf565b50829750879550505050505092915050565b60006020820190508181036000830152614b338184614aa4565b905092915050565b6000819050919050565b6000614b60614b5b614b5684613fd6565b614b3b565b613fd6565b9050919050565b6000614b7282614b45565b9050919050565b6000614b8482614b67565b9050919050565b614b9481614b79565b82525050565b6000602082019050614baf6000830184614b8b565b92915050565b60008060008060608587031215614bcf57614bce613fcc565b5b6000614bdd8782880161401f565b9450506020614bee87828801614312565b935050604085013567ffffffffffffffff811115614c0f57614c0e613fd1565b5b614c1b878288016143c0565b925092505092959194509250565b600080600060608486031215614c4257614c41613fcc565b5b6000614c508682870161401f565b9350506020614c618682870161401f565b9250506040614c7286828701614711565b9150509250925092565b6000604082019050614c91600083018561481c565b614c9e60208301846141b4565b9392505050565b60008060408385031215614cbc57614cbb613fcc565b5b6000614cca8582860161401f565b9250506020614cdb8582860161448d565b9150509250929050565b614cee81614535565b8114614cf957600080fd5b50565b600081359050614d0b81614ce5565b92915050565b60008060008060608587031215614d2b57614d2a613fcc565b5b6000614d398782880161401f565b945050602085013567ffffffffffffffff811115614d5a57614d59613fd1565b5b614d66878288016143c0565b93509350506040614d7987828801614cfc565b91505092959194509250565b6000604082019050614d9a60008301856148fa565b614da760208301846141b4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215614df357614df2613fcc565b5b6000614e0184828501614711565b91505092915050565b614e1381613ff6565b82525050565b6000602082019050614e2e6000830184614e0a565b92915050565b614e3d816146ce565b82525050565b6000606082019050614e586000830186614e0a565b614e656020830185614e0a565b614e726040830184614e34565b949350505050565b614e8381614650565b82525050565b6000604082019050614e9e6000830185614e7a565b614eab6020830184614396565b9392505050565b600082825260208201905092915050565b82818337600083830152505050565b6000614ede8385614eb2565b9350614eeb838584614ec3565b614ef483614a39565b840190509392505050565b60006020820190508181036000830152614f1a818486614ed2565b90509392505050565b600081519050614f32816146fa565b92915050565b600060208284031215614f4e57614f4d613fcc565b5b6000614f5c84828501614f23565b91505092915050565b600082825260208201905092915050565b6000614f828385614f65565b9350614f8f838584614ec3565b614f9883614a39565b840190509392505050565b6000606082019050614fb86000830187614e0a565b614fc56020830186614e0a565b8181036040830152614fd8818486614f76565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061501d826142f1565b9150615028836142f1565b92508282039050818111156150405761503f614fe3565b5b92915050565b600080fd5b600080fd5b6000808585111561506457615063615046565b5b838611156150755761507461504b565b5b6001850283019150848603905094509492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126150e6576150e56150ba565b5b80840192508235915067ffffffffffffffff821115615108576151076150bf565b5b602083019250600182023603831315615124576151236150c4565b5b509250929050565b600081905092915050565b6000615143838561512c565b9350615150838584614ec3565b82840190509392505050565b6000615167826149f3565b615171818561512c565b9350615181818560208601614a0f565b80840191505092915050565b600061519a828587615137565b91506151a6828461515c565b9150819050949350505050565b6000815190506151c2816142fb565b92915050565b6000602082840312156151de576151dd613fcc565b5b60006151ec848285016151b3565b91505092915050565b6000819050919050565b600077ffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061523e615239615234846151f5565b614b3b565b6151ff565b9050919050565b61524e81615223565b82525050565b60006040820190506152696000830185614e0a565b6152766020830184615245565b9392505050565b60006080820190506152926000830187614e0a565b61529f6020830186614e0a565b6152ac6040830185614e0a565b6152b96060830184614e34565b95945050505050565b60006152cd82614535565b91506152d883614535565b9250828201905065ffffffffffff8111156152f6576152f5614fe3565b5b92915050565b60006080820190506153116000830188614547565b61531e6020830187614e0a565b61532b6040830186614e0a565b818103606083015261533e818486614f76565b90509695505050505050565b600060408201905061535f6000830185614e0a565b61536c602083018461417a565b9392505050565b60006020820190506153886000830184614e34565b92915050565b7f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000600082015250565b60006153c4601c83614eb2565b91506153cf8261538e565b602082019050919050565b600060208201905081810360008301526153f3816153b7565b9050919050565b600082905092915050565b600082821b905092915050565b600061541e83836153fa565b8261542981356146ce565b92506004821015615469576154647fffffffff0000000000000000000000000000000000000000000000000000000083600403600802615405565b831692505b505092915050565b60006020828403121561548757615486613fcc565b5b600061549584828501614679565b91505092915050565b50565b60006154ae60008361512c565b91506154b98261549e565b600082019050919050565b60006154cf826154a1565b9150819050919050565b60006040820190506154ee6000830185614e0a565b6154fb6020830184614e34565b9392505050565b600061550e828461515c565b915081905092915050565b600060608201905061552e60008301866141b4565b61553b6020830185614547565b615548604083018461481c565b949350505050565b600060408201905061556560008301856141b4565b6155726020830184614547565b9392505050565b600080fd5b61558782614a39565b810181811067ffffffffffffffff821117156155a6576155a561508b565b5b80604052505050565b60006155b9613fc2565b90506155c5828261557e565b919050565b600067ffffffffffffffff8211156155e5576155e461508b565b5b6155ee82614a39565b9050602081019050919050565b600061560e615609846155ca565b6155af565b90508281526020810184848401111561562a57615629615579565b5b615635848285614ec3565b509392505050565b600082601f83011261565257615651614034565b5b81356156628482602086016155fb565b91505092915050565b60008060006060848603121561568457615683613fcc565b5b600061569286828701614679565b93505060206156a386828701614312565b925050604084013567ffffffffffffffff8111156156c4576156c3613fd1565b5b6156d08682870161563d565b9150509250925092565b60006156e5826141a4565b91506156f0836141a4565b9250828203905063ffffffff81111561570c5761570b614fe3565b5b92915050565b6000819050919050565b600060ff82169050919050565b600061574461573f61573a84615712565b614b3b565b61571c565b9050919050565b61575481615729565b82525050565b600060408201905061576f600083018561574b565b61577c6020830184614396565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006157bd826142f1565b91506157c8836142f1565b92508282019050808211156157e0576157df614fe3565b5b92915050565b7f746f427974657333325f6f75744f66426f756e64730000000000000000000000600082015250565b600061581c601583614eb2565b9150615827826157e6565b602082019050919050565b6000602082019050818103600083015261584b8161580f565b9050919050565b600061585d826149f3565b6158678185614f65565b9350615877818560208601614a0f565b61588081614a39565b840191505092915050565b60006060820190506158a06000830186614e0a565b6158ad6020830185614e0a565b81810360408301526158bf8184615852565b9050949350505050565b6158d28161571c565b82525050565b60006080820190506158ed60008301876148fa565b6158fa60208301866158c9565b61590760408301856148fa565b61591460608301846148fa565b9594505050505056fea2646970667358221220fbf9e2d65e12d5ce07a97dda723ca0b4f89711b1434a8e9178e53246af61098c64736f6c63430008180033",
|
|
1399
1399
|
"linkReferences": {},
|
|
1400
1400
|
"deployedLinkReferences": {}
|
|
1401
1401
|
}
|
|
@@ -124,4 +124,16 @@ contract AccessManagerAccount is AccessManager, BaseAccount {
|
|
|
124
124
|
_checkCanCall(_msgSender(), _msgData(), true);
|
|
125
125
|
entryPoint().withdrawTo(withdrawAddress, amount);
|
|
126
126
|
}
|
|
127
|
+
|
|
128
|
+
function hasRole(
|
|
129
|
+
uint64 roleId,
|
|
130
|
+
address account
|
|
131
|
+
) public view virtual override returns (bool isMember, uint32 executionDelay) {
|
|
132
|
+
if (roleId == PUBLIC_ROLE) {
|
|
133
|
+
return (true, 0);
|
|
134
|
+
} else {
|
|
135
|
+
(uint48 hasRoleSince, uint32 currentDelay, , ) = getAccess(roleId, account);
|
|
136
|
+
return (hasRoleSince != 0, currentDelay);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
127
139
|
}
|