60806040526012600a620000149190620009cf565b633b9aca0062000025919062000a20565b6008556032601255737a250d5630b4cf539739df2c5dacb4c659f2488d601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f80517209907e9a8c6bd8513652cc0fe309b9f13601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f60146101000a81548160ff0219169083151502179055506001601f60186101000a81548160ff0219169083151502179055506103e860085462000160919062000ab0565b6020553480156200017057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa919062000b52565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000359919062000b52565b306040518363ffffffff1660e01b81526004016200037992919062000b95565b6020604051808303816000875af115801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000b52565b601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160046000601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a601360000181905550602860136001018190555060286013600201819055506013600201546013600101546013600001546200057b919062000bc2565b62000587919062000bc2565b601360030181905550600a601760000181905550602860176001018190555060c8601760020181905550601760020154601760010154601760000154620005cf919062000bc2565b620005db919062000bc2565b601760030181905550600a6009819055506009546103e860085462000601919062000ab0565b6200060d919062000a20565b600c81905550600a8081905550600a546103e86008546200062f919062000ab0565b6200063b919062000a20565b600d81905550600a600b81905550600b546103e86008546200065e919062000ab0565b6200066a919062000a20565b600e819055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055600560008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600854600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000827919062000c30565b60405180910390a362000c4d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008c3578086048111156200089b576200089a62000835565b5b6001851615620008ab5780820291505b8081029050620008bb8562000864565b94506200087b565b94509492505050565b600082620008de5760019050620009b1565b81620008ee5760009050620009b1565b8160018114620009075760028114620009125762000948565b6001915050620009b1565b60ff84111562000927576200092662000835565b5b8360020a91508482111562000941576200094062000835565b5b50620009b1565b5060208310610133831016604e8410600b8410161715620009825782820a9050838111156200097c576200097b62000835565b5b620009b1565b62000991848484600162000871565b92509050818404811115620009ab57620009aa62000835565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009dc82620009b8565b9150620009e983620009c2565b925062000a187fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008cc565b905092915050565b600062000a2d82620009b8565b915062000a3a83620009b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a765762000a7562000835565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000abd82620009b8565b915062000aca83620009b8565b92508262000add5762000adc62000a81565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b1a8262000aed565b9050919050565b62000b2c8162000b0d565b811462000b3857600080fd5b50565b60008151905062000b4c8162000b21565b92915050565b60006020828403121562000b6b5762000b6a62000ae8565b5b600062000b7b8482850162000b3b565b91505092915050565b62000b8f8162000b0d565b82525050565b600060408201905062000bac600083018562000b84565b62000bbb602083018462000b84565b9392505050565b600062000bcf82620009b8565b915062000bdc83620009b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c145762000c1362000835565b5b828201905092915050565b62000c2a81620009b8565b82525050565b600060208201905062000c47600083018462000c1f565b92915050565b61425f8062000c5d6000396000f3fe60806040526004361061028c5760003560e01c80636ddd17131161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef1146109d1578063dd62ed3e146109fa578063e065099714610a37578063e5a772d214610a62578063f2fde38b14610a8b578063f887ea4014610ab457610293565b8063a5949bcf146108ad578063a8aa1b31146108d8578063a9059cbb14610903578063b46ba24b14610940578063b704a9f614610969578063d51ed1c81461099457610293565b8063893d20e811610113578063893d20e8146107b35780638ca42e4e146107de5780638ee41ca81461080757806395d89b41146108305780639b0ad05c1461085b5780639be953b31461088457610293565b80636ddd1713146106a557806370a08231146106d0578063715018a61461070d5780637a6d69b41461072457806383bd84851461076157806387cfc4931461078a57610293565b80632d3b4047116101fe5780634c5d8710116101b75780634c5d8710146105a957806352aae9dd146105d257806353cd6210146105fb578063599ca3971461062657806359d3cac2146106515780636390aeeb1461067a57610293565b80632d3b4047146104ba5780632f54bf6e146104e5578063313ce56714610522578063364333f41461054d578063470624021461056457806347375a371461059257610293565b80631161ae39116102505780631161ae391461039157806318160ddd146103ce5780631ca0b1d0146103f957806323b872dd146104245780632b112e49146104615780632b14ca561461048c57610293565b806306fdde031461029857806308b1fd8f146102c3578063095ea7b3146102ee5780630c5b1d931461032b5780630cb23d861461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610adf565b6040516102ba9190613172565b60405180910390f35b3480156102cf57600080fd5b506102d8610aff565b6040516102e591906131d5565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613266565b610b25565b60405161032291906132c1565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190613308565b610c17565b005b34801561036057600080fd5b5061037b60048036038101906103769190613348565b610cba565b60405161038891906132c1565b60405180910390f35b34801561039d57600080fd5b506103b860048036038101906103b39190613375565b610cda565b6040516103c591906132c1565b60405180910390f35b3480156103da57600080fd5b506103e3610cef565b6040516103f091906133c4565b60405180910390f35b34801561040557600080fd5b5061040e610cf9565b60405161041b919061349d565b60405180910390f35b34801561043057600080fd5b5061044b600480360381019061044691906134bf565b610d87565b60405161045891906132c1565b60405180910390f35b34801561046d57600080fd5b50610476610fd9565b60405161048391906133c4565b60405180910390f35b34801561049857600080fd5b506104a161100c565b6040516104b19493929190613512565b60405180910390f35b3480156104c657600080fd5b506104cf61102a565b6040516104dc91906131d5565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190613348565b611050565b60405161051991906132c1565b60405180910390f35b34801561052e57600080fd5b506105376110a9565b6040516105449190613573565b60405180910390f35b34801561055957600080fd5b506105626110b2565b005b34801561057057600080fd5b50610579611169565b6040516105899493929190613512565b60405180910390f35b34801561059e57600080fd5b506105a7611187565b005b3480156105b557600080fd5b506105d060048036038101906105cb919061358e565b6111ec565b005b3480156105de57600080fd5b506105f960048036038101906105f491906135e1565b61129c565b005b34801561060757600080fd5b506106106112ee565b60405161061d91906132c1565b60405180910390f35b34801561063257600080fd5b5061063b611301565b60405161064891906133c4565b60405180910390f35b34801561065d57600080fd5b506106786004803603810190610673919061358e565b611307565b005b34801561068657600080fd5b5061068f6113a1565b60405161069c91906133c4565b60405180910390f35b3480156106b157600080fd5b506106ba6113ae565b6040516106c791906132c1565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190613348565b6113c1565b60405161070491906133c4565b60405180910390f35b34801561071957600080fd5b5061072261140a565b005b34801561073057600080fd5b5061074b60048036038101906107469190613348565b611510565b60405161075891906132c1565b60405180910390f35b34801561076d57600080fd5b506107886004803603810190610783919061360e565b611530565b005b34801561079657600080fd5b506107b160048036038101906107ac9190613348565b611595565b005b3480156107bf57600080fd5b506107c8611638565b6040516107d591906131d5565b60405180910390f35b3480156107ea57600080fd5b50610805600480360381019061080091906135e1565b611661565b005b34801561081357600080fd5b5061082e6004803603810190610829919061363b565b6116b3565b005b34801561083c57600080fd5b5061084561173a565b6040516108529190613172565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613886565b611777565b005b34801561089057600080fd5b506108ab60048036038101906108a69190613348565b61188a565b005b3480156108b957600080fd5b506108c26119bd565b6040516108cf91906131d5565b60405180910390f35b3480156108e457600080fd5b506108ed6119e3565b6040516108fa91906131d5565b60405180910390f35b34801561090f57600080fd5b5061092a60048036038101906109259190613266565b611a09565b60405161093791906132c1565b60405180910390f35b34801561094c57600080fd5b506109676004803603810190610962919061358e565b611a20565b005b34801561097557600080fd5b5061097e611aba565b60405161098b91906133c4565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b691906135e1565b611ac0565b6040516109c891906133c4565b60405180910390f35b3480156109dd57600080fd5b506109f860048036038101906109f391906138fe565b611b1d565b005b348015610a0657600080fd5b50610a216004803603810190610a1c91906138fe565b611beb565b604051610a2e91906133c4565b60405180910390f35b348015610a4357600080fd5b50610a4c611c72565b604051610a5991906133c4565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190613348565b611c78565b005b348015610a9757600080fd5b50610ab26004803603810190610aad9190613348565b611d73565b005b348015610ac057600080fd5b50610ac9611ee8565b604051610ad6919061399d565b60405180910390f35b606060405180606001604052806021815260200161420960219139905090565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906133c4565b60405180910390a36001905092915050565b610c2033611050565b610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613a04565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600082610ce683611ac0565b11905092915050565b6000600854905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015610d7d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d33575b5050505050905090565b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e1657600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610fc25782600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f419190613a53565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610fcd858585611f0e565b60019150509392505050565b6000610fe560006113c1565b610ff061dead6113c1565b600854610ffd9190613a53565b6110079190613a53565b905090565b60178060000154908060010154908060020154908060030154905084565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6110bb33611050565b6110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190613a04565b60405180910390fd5b600047905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611165573d6000803e3d6000fd5b5050565b60138060000154908060010154908060020154908060030154905084565b61119033611050565b6111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613a04565b60405180910390fd5b6001601f60176101000a81548160ff021916908315150217905550565b6111f533611050565b611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90613a04565b60405180910390fd5b826103e86008546112459190613ab6565b61124f9190613ae7565b600c81905550816103e86008546112669190613ab6565b6112709190613ae7565b600d81905550806103e86008546112879190613ab6565b6112919190613ae7565b600e81905550505050565b6112a533611050565b6112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db90613a04565b60405180910390fd5b8060128190555050565b601f60149054906101000a900460ff1681565b600b5481565b61131033611050565b61134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690613a04565b60405180910390fd5b8260176000018190555081601760010181905550806017600201819055506017600201546017600101546017600001546113899190613b41565b6113939190613b41565b601760030181905550505050565b6000600f80549050905090565b601f60189054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141333611050565b611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144990613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60026020528060005260406000206000915054906101000a900460ff1681565b61153933611050565b611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f90613a04565b60405180910390fd5b80601f60146101000a81548160ff02191690831515021790555050565b61159e33611050565b6115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d490613a04565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166a33611050565b6116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090613a04565b60405180910390fd5b8060118190555050565b6116bc33611050565b6116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f290613a04565b60405180910390fd5b81601f60186101000a81548160ff021916908315150217905550806103e86008546117269190613ab6565b6117309190613ae7565b6020819055505050565b60606040518060400160405280600481526020017f414d4f5200000000000000000000000000000000000000000000000000000000815250905090565b61178033611050565b6117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b690613a04565b60405180910390fd5b6064825110611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa90613c09565b60405180910390fd5b60005b825181101561188557600083828151811061182457611823613c29565b5b6020026020010151905060006012600a61183e9190613d8b565b84848151811061185157611850613c29565b5b60200260200101516118639190613ae7565b9050611870338383611f0e565b5050808061187d90613dd6565b915050611806565b505050565b61189333611050565b6118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613a04565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161190d91906131d5565b602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190613e34565b9050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119b8573d6000803e3d6000fd5b505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611a16338484611f0e565b6001905092915050565b611a2933611050565b611a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5f90613a04565b60405180910390fd5b826013600001819055508160136001018190555080601360020181905550601360020154601360010154601360000154611aa29190613b41565b611aac9190613b41565b601360030181905550505050565b600a5481565b6000611aca610fd9565b6002611af7601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c1565b611b019190613ae7565b83611b0c9190613ae7565b611b169190613ab6565b9050919050565b611b2633611050565b611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c90613a04565b60405180910390fd5b81601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b611c8133611050565b611cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb790613a04565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611d7c33611050565b611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613a04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613ed3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f785750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae90613f3f565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120fc5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121135750601f60159054906101000a900460ff165b9050801561212b57612126868686612291565b612289565b601f60179054906101000a900460ff1661214457600080fd5b601f60149054906101000a900460ff1615612169576121648686866123a3565b612288565b821561217f5761217a86868661252c565b612287565b81156121ab5761218d61265e565b1561219b5761219a6126db565b5b6121a6868686612809565b612286565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561224f5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61225857600080fd5b600e5484612265876113c1565b61226f9190613b41565b111561227a57600080fd5b612285868686612905565b5b5b5b5b505050505050565b6122e58382600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122e09190613a53565b612955565b6123398282600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123349190613b41565b612955565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161239691906133c4565b60405180910390a3505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123fa57600080fd5b600c5481111561243f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243690613fab565b60405180910390fd5b606460238261244e9190613ae7565b6124589190613ab6565b6010819055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061252783838360105461299d565b505050565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561258357600080fd5b600c548111156125c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bf90613fab565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612642576103e86013600301548261262d9190613ae7565b6126379190613ab6565b60108190555061264b565b60006010819055505b61265983838360105461299d565b505050565b6000601f60169054906101000a900460ff161580156126895750601f60189054906101000a900460ff165b80156126d65750602054600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601f60166101000a81548160ff0219169083151502179055506000612701306113c1565b9050600060136003015460176003015461271b9190613b41565b6013600001546017600001546127319190613b41565b8361273c9190613ae7565b6127469190613ab6565b9050600081836127569190613a53565b905060006002836127679190613ab6565b9050600081846127779190613a53565b905080836127859190613b41565b9450600047905061279586612b7c565b600081476127a39190613a53565b905060008784836127b49190613ae7565b6127be9190613ab6565b90506127ca8582612d92565b600083476127d89190613a53565b90506127e381612e9b565b5050505050505050506000601f60166101000a81548160ff021916908315150217905550565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561286057600080fd5b600d5481111561286f57600080fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166128e9576103e8601760030154826128d49190613ae7565b6128de9190613ab6565b6010819055506128f2565b60006010819055505b61290083838360105461299d565b505050565b6103e8601154826129169190613ae7565b6129209190613ab6565b601081905550600060105411156129445761293f83838360105461299d565b612950565b61294f838383612291565b5b505050565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000601054836129ad9190613a53565b9050612a038584600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fe9190613a53565b612955565b612a573083600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a529190613b41565b612955565b612aab8482600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aa69190613b41565b612955565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0891906133c4565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b6d91906133c4565b60405180910390a35050505050565b6000600267ffffffffffffffff811115612b9957612b98613680565b5b604051908082528060200260200182016040528015612bc75781602001602082028036833780820191505090505b5090503081600081518110612bdf57612bde613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612caa9190613fe0565b81600181518110612cbe57612cbd613c29565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d5c959493929190614048565b600060405180830381600087803b158015612d7657600080fd5b505af1158015612d8a573d6000803e3d6000fd5b505050505050565b6001601f60156101000a81548160ff021916908315150217905550601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e36969594939291906140a2565b60606040518083038185885af1158015612e54573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e799190614103565b5050506000601f60156101000a81548160ff0219169083151502179055505050565b6000601760020154601360020154612eb39190613b41565b90506000601760010154601360010154612ecd9190613b41565b905060008183612edd9190613b41565b90506000818486612eee9190613ae7565b612ef89190613ab6565b90506000828487612f099190613ae7565b612f139190613ab6565b90506000811115612ff3576000601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612f6a90614187565b600060405180830381858888f193505050503d8060008114612fa8576040519150601f19603f3d011682016040523d82523d6000602084013e612fad565b606091505b5050905080612ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe8906141e8565b60405180910390fd5b505b60008211156130d1576000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161304890614187565b600060405180830381858888f193505050503d8060008114613086576040519150601f19603f3d011682016040523d82523d6000602084013e61308b565b606091505b50509050806130cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c6906141e8565b60405180910390fd5b505b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131135780820151818401526020810190506130f8565b83811115613122576000848401525b50505050565b6000601f19601f8301169050919050565b6000613144826130d9565b61314e81856130e4565b935061315e8185602086016130f5565b61316781613128565b840191505092915050565b6000602082019050818103600083015261318c8184613139565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131bf82613194565b9050919050565b6131cf816131b4565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000604051905090565b600080fd5b600080fd5b61320d816131b4565b811461321857600080fd5b50565b60008135905061322a81613204565b92915050565b6000819050919050565b61324381613230565b811461324e57600080fd5b50565b6000813590506132608161323a565b92915050565b6000806040838503121561327d5761327c6131fa565b5b600061328b8582860161321b565b925050602061329c85828601613251565b9150509250929050565b60008115159050919050565b6132bb816132a6565b82525050565b60006020820190506132d660008301846132b2565b92915050565b6132e5816132a6565b81146132f057600080fd5b50565b600081359050613302816132dc565b92915050565b6000806040838503121561331f5761331e6131fa565b5b600061332d8582860161321b565b925050602061333e858286016132f3565b9150509250929050565b60006020828403121561335e5761335d6131fa565b5b600061336c8482850161321b565b91505092915050565b6000806040838503121561338c5761338b6131fa565b5b600061339a85828601613251565b92505060206133ab85828601613251565b9150509250929050565b6133be81613230565b82525050565b60006020820190506133d960008301846133b5565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613414816131b4565b82525050565b6000613426838361340b565b60208301905092915050565b6000602082019050919050565b600061344a826133df565b61345481856133ea565b935061345f836133fb565b8060005b83811015613490578151613477888261341a565b975061348283613432565b925050600181019050613463565b5085935050505092915050565b600060208201905081810360008301526134b7818461343f565b905092915050565b6000806000606084860312156134d8576134d76131fa565b5b60006134e68682870161321b565b93505060206134f78682870161321b565b925050604061350886828701613251565b9150509250925092565b600060808201905061352760008301876133b5565b61353460208301866133b5565b61354160408301856133b5565b61354e60608301846133b5565b95945050505050565b600060ff82169050919050565b61356d81613557565b82525050565b60006020820190506135886000830184613564565b92915050565b6000806000606084860312156135a7576135a66131fa565b5b60006135b586828701613251565b93505060206135c686828701613251565b92505060406135d786828701613251565b9150509250925092565b6000602082840312156135f7576135f66131fa565b5b600061360584828501613251565b91505092915050565b600060208284031215613624576136236131fa565b5b6000613632848285016132f3565b91505092915050565b60008060408385031215613652576136516131fa565b5b6000613660858286016132f3565b925050602061367185828601613251565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6136b882613128565b810181811067ffffffffffffffff821117156136d7576136d6613680565b5b80604052505050565b60006136ea6131f0565b90506136f682826136af565b919050565b600067ffffffffffffffff82111561371657613715613680565b5b602082029050602081019050919050565b600080fd5b600061373f61373a846136fb565b6136e0565b9050808382526020820190506020840283018581111561376257613761613727565b5b835b8181101561378b5780613777888261321b565b845260208401935050602081019050613764565b5050509392505050565b600082601f8301126137aa576137a961367b565b5b81356137ba84826020860161372c565b91505092915050565b600067ffffffffffffffff8211156137de576137dd613680565b5b602082029050602081019050919050565b60006138026137fd846137c3565b6136e0565b9050808382526020820190506020840283018581111561382557613824613727565b5b835b8181101561384e578061383a8882613251565b845260208401935050602081019050613827565b5050509392505050565b600082601f83011261386d5761386c61367b565b5b813561387d8482602086016137ef565b91505092915050565b6000806040838503121561389d5761389c6131fa565b5b600083013567ffffffffffffffff8111156138bb576138ba6131ff565b5b6138c785828601613795565b925050602083013567ffffffffffffffff8111156138e8576138e76131ff565b5b6138f485828601613858565b9150509250929050565b60008060408385031215613915576139146131fa565b5b60006139238582860161321b565b92505060206139348582860161321b565b9150509250929050565b6000819050919050565b600061396361395e61395984613194565b61393e565b613194565b9050919050565b600061397582613948565b9050919050565b60006139878261396a565b9050919050565b6139978161397c565b82525050565b60006020820190506139b2600083018461398e565b92915050565b7f21594f5520415245204e4f5420544845204f574e455200000000000000000000600082015250565b60006139ee6016836130e4565b91506139f9826139b8565b602082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5e82613230565b9150613a6983613230565b925082821015613a7c57613a7b613a24565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac182613230565b9150613acc83613230565b925082613adc57613adb613a87565b5b828204905092915050565b6000613af282613230565b9150613afd83613230565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b3657613b35613a24565b5b828202905092915050565b6000613b4c82613230565b9150613b5783613230565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b8c57613b8b613a24565b5b828201905092915050565b7f43616e206f6e6c792061697264726f70203130302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000613bf36036836130e4565b9150613bfe82613b97565b604082019050919050565b60006020820190508181036000830152613c2281613be6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613caf57808604811115613c8b57613c8a613a24565b5b6001851615613c9a5780820291505b8081029050613ca885613c58565b9450613c6f565b94509492505050565b600082613cc85760019050613d84565b81613cd65760009050613d84565b8160018114613cec5760028114613cf657613d25565b6001915050613d84565b60ff841115613d0857613d07613a24565b5b8360020a915084821115613d1f57613d1e613a24565b5b50613d84565b5060208310610133831016604e8410600b8410161715613d5a5782820a905083811115613d5557613d54613a24565b5b613d84565b613d678484846001613c65565b92509050818404811115613d7e57613d7d613a24565b5b81810290505b9392505050565b6000613d9682613230565b9150613da183613557565b9250613dce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb8565b905092915050565b6000613de182613230565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613e1457613e13613a24565b5b600182019050919050565b600081519050613e2e8161323a565b92915050565b600060208284031215613e4a57613e496131fa565b5b6000613e5884828501613e1f565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ebd6026836130e4565b9150613ec882613e61565b604082019050919050565b60006020820190508181036000830152613eec81613eb0565b9050919050565b7f43616e6e6f7420626520616464726573732830292e0000000000000000000000600082015250565b6000613f296015836130e4565b9150613f3482613ef3565b602082019050919050565b60006020820190508181036000830152613f5881613f1c565b9050919050565b7f4275792065786365656473206c696d6974000000000000000000000000000000600082015250565b6000613f956011836130e4565b9150613fa082613f5f565b602082019050919050565b60006020820190508181036000830152613fc481613f88565b9050919050565b600081519050613fda81613204565b92915050565b600060208284031215613ff657613ff56131fa565b5b600061400484828501613fcb565b91505092915050565b6000819050919050565b600061403261402d6140288461400d565b61393e565b613230565b9050919050565b61404281614017565b82525050565b600060a08201905061405d60008301886133b5565b61406a6020830187614039565b818103604083015261407c818661343f565b905061408b60608301856131c6565b61409860808301846133b5565b9695505050505050565b600060c0820190506140b760008301896131c6565b6140c460208301886133b5565b6140d16040830187614039565b6140de6060830186614039565b6140eb60808301856131c6565b6140f860a08301846133b5565b979650505050505050565b60008060006060848603121561411c5761411b6131fa565b5b600061412a86828701613e1f565b935050602061413b86828701613e1f565b925050604061414c86828701613e1f565b9150509250925092565b600081905092915050565b50565b6000614171600083614156565b915061417c82614161565b600082019050919050565b600061419282614164565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b60006141d2601e836130e4565b91506141dd8261419c565b602082019050919050565b60006020820190508181036000830152614201816141c5565b905091905056fe4169204d617463686d616b696e67204f7065726174697665205265736561726368a2646970667358221220d443237046b00c049ff35cb44398313f9b6f6afd045adcfef9d8246a7034694164736f6c634300080a0033