6080604052730cba60ca5ef4d42f92a5070a8fedd13be93e2861600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a62000069919062000dd1565b633b9aca006200007a919062000e22565b60025561dead600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860146101000a81548160ff021916908315150217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600f55600360105560236011556000601255604160135560646014557396760c36957c8837ae70dad7def24f34507ed165601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506000601b556200024b606460025462000b6f60201b6200212e1790919060201c565b601c556200026b603260025462000b6f60201b6200212e1790919060201c565b601d556200028c61019060025462000b6f60201b6200212e1790919060201c565b601e553480156200029c57600080fd5b50604051620077fc380380620077fc8339818101604052810190620002c2919062000ed7565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ed919062000ed7565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c1919062000ed7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200051f92919062000f1a565b6020604051808303816000875af11580156200053f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000565919062000ed7565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051620006769062000c29565b604051809103906000f08015801562000693573d6000803e3d6000fd5b50601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600254600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000b60919062000f58565b60405180910390a3506200109a565b600062000bb983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000bc160201b60201c565b905092915050565b6000808311829062000c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c0291906200100f565b60405180910390fd5b506000838562000c1c919062001062565b9050809150509392505050565b61200980620057f383390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cc55780860481111562000c9d5762000c9c62000c37565b5b600185161562000cad5780820291505b808102905062000cbd8562000c66565b945062000c7d565b94509492505050565b60008262000ce0576001905062000db3565b8162000cf0576000905062000db3565b816001811462000d09576002811462000d145762000d4a565b600191505062000db3565b60ff84111562000d295762000d2862000c37565b5b8360020a91508482111562000d435762000d4262000c37565b5b5062000db3565b5060208310610133831016604e8410600b841016171562000d845782820a90508381111562000d7e5762000d7d62000c37565b5b62000db3565b62000d93848484600162000c73565b9250905081840481111562000dad5762000dac62000c37565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000dde8262000dba565b915062000deb8362000dc4565b925062000e1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cce565b905092915050565b600062000e2f8262000dba565b915062000e3c8362000dba565b925082820262000e4c8162000dba565b9150828204841483151762000e665762000e6562000c37565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e9f8262000e72565b9050919050565b62000eb18162000e92565b811462000ebd57600080fd5b50565b60008151905062000ed18162000ea6565b92915050565b60006020828403121562000ef05762000eef62000e6d565b5b600062000f008482850162000ec0565b91505092915050565b62000f148162000e92565b82525050565b600060408201905062000f31600083018562000f09565b62000f40602083018462000f09565b9392505050565b62000f528162000dba565b82525050565b600060208201905062000f6f600083018462000f47565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000fb157808201518184015260208101905062000f94565b60008484015250505050565b6000601f19601f8301169050919050565b600062000fdb8262000f75565b62000fe7818562000f80565b935062000ff981856020860162000f91565b620010048162000fbd565b840191505092915050565b600060208201905081810360008301526200102b818462000fce565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200106f8262000dba565b91506200107c8362000dba565b9250826200108f576200108e62001033565b5b828204905092915050565b61474980620010aa6000396000f3fe6080604052600436106103855760003560e01c80637437681e116101d1578063bb542ef011610102578063dd62ed3e116100a0578063f887ea401161006f578063f887ea4014610cfb578063f8b45b0514610d26578063fabe628314610d51578063ffb54a9914610d7a5761038c565b8063dd62ed3e14610c41578063e9a5c77614610c7e578063f2fde38b14610ca9578063f708a64f14610cd25761038c565b8063c8d1293d116100dc578063c8d1293d14610bab578063c9567bf914610bd6578063caa5581b14610bed578063d920334e14610c185761038c565b8063bb542ef014610b2c578063bf56b37114610b55578063c45a015514610b805761038c565b8063893d20e81161016f578063a3a2e89e11610149578063a3a2e89e14610a72578063a8aa1b3114610a9b578063a9059cbb14610ac6578063b515566a14610b035761038c565b8063893d20e8146109df5780638b42507f14610a0a57806395d89b4114610a475761038c565b80637db1342c116101ab5780637db1342c1461094b5780637dfcbe3414610974578063819340311461099f57806389291a8f146109c85761038c565b80637437681e146108b857806375df1305146108e357806377359aa71461090e5761038c565b80633dab5269116102b65780635423aa241161025457806366eb37851161022357806366eb37851461080e5780636b6a17b4146108255780636dac5ded1461085057806370a082311461087b5761038c565b80635423aa2414610752578063571ac8b01461077b57806359927044146107b85780636303516c146107e35761038c565b8063454343771161029057806345434377146106a857806345bb0a11146106d357806347062402146106fc5780634a74bb02146107275761038c565b80633dab5269146106055780633f4218e01461062e5780634355855a1461066b5761038c565b80632b112e49116103235780632dbea2e1116102fd5780632dbea2e11461054b5780632f54bf6e1461057457806330ca34ee146105b1578063313ce567146105da5761038c565b80632b112e49146104cc5780632b14ca56146104f75780632d48e896146105225761038c565b8063095ea7b31161035f578063095ea7b3146103fe57806318160ddd1461043b57806323b872dd14610466578063273123b7146104a35761038c565b80630445b667146103915780630572b0cc146103bc57806306fdde03146103d35761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610da5565b6040516103b391906137d5565b60405180910390f35b3480156103c857600080fd5b506103d1610dab565b005b3480156103df57600080fd5b506103e8610e3a565b6040516103f59190613880565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613940565b610e77565b604051610432919061399b565b60405180910390f35b34801561044757600080fd5b50610450610f69565b60405161045d91906137d5565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906139b6565b610f73565b60405161049a919061399b565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190613a09565b611173565b005b3480156104d857600080fd5b506104e1611216565b6040516104ee91906137d5565b60405180910390f35b34801561050357600080fd5b5061050c611298565b60405161051991906137d5565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190613a36565b61129e565b005b34801561055757600080fd5b50610572600480360381019061056d9190613a76565b611379565b005b34801561058057600080fd5b5061059b60048036038101906105969190613a09565b6113db565b6040516105a8919061399b565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190613a36565b611434565b005b3480156105e657600080fd5b506105ef61151a565b6040516105fc9190613ae5565b60405180910390f35b34801561061157600080fd5b5061062c60048036038101906106279190613b2c565b611523565b005b34801561063a57600080fd5b5061065560048036038101906106509190613a09565b611590565b604051610662919061399b565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190613a09565b6115b0565b60405161069f919061399b565b60405180910390f35b3480156106b457600080fd5b506106bd6115d0565b6040516106ca91906137d5565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190613baa565b6115d6565b005b34801561070857600080fd5b50610711611662565b60405161071e91906137d5565b60405180910390f35b34801561073357600080fd5b5061073c611668565b604051610749919061399b565b60405180910390f35b34801561075e57600080fd5b5061077960048036038101906107749190613bd7565b61167b565b005b34801561078757600080fd5b506107a2600480360381019061079d9190613a09565b6116cd565b6040516107af919061399b565b60405180910390f35b3480156107c457600080fd5b506107cd611700565b6040516107da9190613c13565b60405180910390f35b3480156107ef57600080fd5b506107f8611726565b6040516108059190613c13565b60405180910390f35b34801561081a57600080fd5b5061082361174c565b005b34801561083157600080fd5b5061083a61179e565b60405161084791906137d5565b60405180910390f35b34801561085c57600080fd5b506108656117a4565b6040516108729190613c8d565b60405180910390f35b34801561088757600080fd5b506108a2600480360381019061089d9190613a09565b6117ca565b6040516108af91906137d5565b60405180910390f35b3480156108c457600080fd5b506108cd611813565b6040516108da91906137d5565b60405180910390f35b3480156108ef57600080fd5b506108f8611819565b60405161090591906137d5565b60405180910390f35b34801561091a57600080fd5b5061093560048036038101906109309190613a09565b61181f565b60405161094291906137d5565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613bd7565b6118c4565b005b34801561098057600080fd5b50610989611916565b604051610996919061399b565b60405180910390f35b3480156109ab57600080fd5b506109c660048036038101906109c19190613bd7565b611929565b005b3480156109d457600080fd5b506109dd611a01565b005b3480156109eb57600080fd5b506109f4611ac4565b604051610a019190613c13565b60405180910390f35b348015610a1657600080fd5b50610a316004803603810190610a2c9190613a09565b611aed565b604051610a3e919061399b565b60405180910390f35b348015610a5357600080fd5b50610a5c611b0d565b604051610a699190613880565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190613ca8565b611b4a565b005b348015610aa757600080fd5b50610ab0611bed565b604051610abd9190613c13565b60405180910390f35b348015610ad257600080fd5b50610aed6004803603810190610ae89190613940565b611c13565b604051610afa919061399b565b60405180910390f35b348015610b0f57600080fd5b50610b2a6004803603810190610b259190613e30565b611c28565b005b348015610b3857600080fd5b50610b536004803603810190610b4e9190613baa565b611d05565b005b348015610b6157600080fd5b50610b6a611d91565b604051610b7791906137d5565b60405180910390f35b348015610b8c57600080fd5b50610b95611d97565b604051610ba29190613c13565b60405180910390f35b348015610bb757600080fd5b50610bc0611dbd565b604051610bcd91906137d5565b60405180910390f35b348015610be257600080fd5b50610beb611dc3565b005b348015610bf957600080fd5b50610c02611e2f565b604051610c0f91906137d5565b60405180910390f35b348015610c2457600080fd5b50610c3f6004803603810190610c3a9190613bd7565b611e35565b005b348015610c4d57600080fd5b50610c686004803603810190610c639190613e79565b611e87565b604051610c7591906137d5565b60405180910390f35b348015610c8a57600080fd5b50610c93611f0e565b604051610ca09190613c13565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb9190613baa565b611f34565b005b348015610cde57600080fd5b50610cf96004803603810190610cf49190613ca8565b611ff6565b005b348015610d0757600080fd5b50610d1061204c565b604051610d1d9190613eec565b60405180910390f35b348015610d3257600080fd5b50610d3b612072565b604051610d4891906137d5565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d739190613ca8565b612078565b005b348015610d8657600080fd5b50610d8f61211b565b604051610d9c919061399b565b60405180910390f35b601e5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634634d81c336040518263ffffffff1660e01b8152600401610e069190613c13565b600060405180830381600087803b158015610e2057600080fd5b505af1158015610e34573d6000803e3d6000fd5b50505050565b60606040518060400160405280601181526020017f42616279205468652050726f746f636f6c000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f5791906137d5565b60405180910390a36001905092915050565b6000600254905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115f576110de826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121789092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61116a8484846121dc565b90509392505050565b61117c336113db565b6111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613f53565b60405180910390fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611293611246600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117ca565b611285611274600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117ca565b600254612aee90919063ffffffff16565b612aee90919063ffffffff16565b905090565b60105481565b6112a7336113db565b6112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90613f53565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611343929190613f73565b600060405180830381600087803b15801561135d57600080fd5b505af1158015611371573d6000803e3d6000fd5b505050505050565b611382336113db565b6113c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b890613f53565b60405180910390fd5b826011819055508160128190555080601381905550505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b61143d336113db565b61147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147390613f53565b60405180910390fd5b81600f8190555080601081905550600a600f5411156114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613fe8565b60405180910390fd5b600a6010541115611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d90613fe8565b60405180910390fd5b5050565b60006012905090565b61152c336113db565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613f53565b60405180910390fd5b81601960156101000a81548160ff02191690831515021790555080601e819055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900460ff1681565b60145481565b6115df336113db565b61161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590613f53565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b601960159054906101000a900460ff1681565b611684336113db565b6116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba90613f53565b60405180910390fd5b80601b8190555050565b60006116f9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e77565b9050919050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611755336113db565b611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90613f53565b60405180910390fd5b61179c612b38565b565b601b5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601c5481565b60135481565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b815260040161187c9190613c13565b602060405180830381865afa158015611899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bd919061401d565b9050919050565b6118cd336113db565b61190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613f53565b60405180910390fd5b80601d8190555050565b600860149054906101000a900460ff1681565b611932336113db565b611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613f53565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479826040518263ffffffff1660e01b81526004016119cc91906137d5565b600060405180830381600087803b1580156119e657600080fd5b505af11580156119fa573d6000803e3d6000fd5b5050505050565b611a0a336113db565b611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4090613f53565b60405180910390fd5b60004790506000811115611ac157601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611abf573d6000803e3d6000fd5b505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f4254484500000000000000000000000000000000000000000000000000000000815250905090565b611b53336113db565b611b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8990613f53565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c203384846121dc565b905092915050565b611c31336113db565b611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613f53565b60405180910390fd5b60005b8151811015611d0157600160096000848481518110611c9557611c9461404a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611cf9906140a8565b915050611c73565b5050565b611d0e336113db565b611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490613f53565b60405180910390fd5b80601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b611dcc336113db565b611e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0290613f53565b60405180910390fd5b43600d819055506001601960166101000a81548160ff021916908315150217905550565b60115481565b611e3e336113db565b611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613f53565b60405180910390fd5b80601c8190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611f3d336113db565b611f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7390613f53565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611feb9190614111565b60405180910390a150565b611fff336113db565b61203e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203590613f53565b60405180910390fd5b6120488282612dba565b5050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b612081336113db565b6120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613f53565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960169054906101000a900460ff1681565b600061217083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613012565b905092915050565b60008383111582906121c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b79190613880565b60405180910390fd5b50600083856121cf919061412c565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612287575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122dc57601960169054906101000a900460ff166122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d2906141ac565b60405180910390fd5b5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123805750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61238957600080fd5b601960149054906101000a900460ff16156123b0576123a9848484613075565b9050612ae7565b601c548211158061240a5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244090614218565b60405180910390fd5b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124af5750600860149054906101000a900460ff165b1561254b57601d5461250983600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324890919063ffffffff16565b111561254a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254190614284565b60405180910390fd5b5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156125b65750601960149054906101000a900460ff16155b80156125ce5750601960159054906101000a900460ff165b801561261b5750601e54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561262957612628612b38565b5b6126b2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121789092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561279b5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6127a557826127b1565b6127b08585856132a6565b5b905061280581600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324890919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661296257601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129359291906142a4565b600060405180830381600087803b15801561294f57600080fd5b505af1925050508015612960575060015b505b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612a7c57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612a4f9291906142a4565b600060405180830381600087803b158015612a6957600080fd5b505af1925050508015612a7a575060015b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ad991906137d5565b60405180910390a360019150505b9392505050565b6000612b3083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612178565b905092915050565b6001601960146101000a81548160ff0219169083151502179055506000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000612bd46002612bc66064612bb86012548761344e90919063ffffffff16565b61212e90919063ffffffff16565b61212e90919063ffffffff16565b90506000612beb8284612aee90919063ffffffff16565b9050612bf6816134c8565b60004790506000612c256064612c176011548561344e90919063ffffffff16565b61212e90919063ffffffff16565b90506000612c516064612c436013548661344e90919063ffffffff16565b61212e90919063ffffffff16565b90506000612c906002612c826064612c746012548961344e90919063ffffffff16565b61212e90919063ffffffff16565b61212e90919063ffffffff16565b90506000841115612d0557601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612d03573d6000803e3d6000fd5b505b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d6f57600080fd5b505af193505050508015612d81575060015b506000861115612d9657612d9586826136e9565b5b505050505050506000601960146101000a81548160ff021916908315150217905550565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e445750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612e4d57600080fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612f3f57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612f08929190614308565b600060405180830381600087803b158015612f2257600080fd5b505af1158015612f36573d6000803e3d6000fd5b5050505061300e565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612fdb9291906142a4565b600060405180830381600087803b158015612ff557600080fd5b505af1158015613009573d6000803e3d6000fd5b505050505b5050565b60008083118290613059576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130509190613880565b60405180910390fd5b50600083856130689190614360565b9050809150509392505050565b6000613100826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121789092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061319582600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161323591906137d5565b60405180910390a3600190509392505050565b60008082846132579190614391565b90508381101561329c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329390614411565b60405180910390fd5b8091505092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff16601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461330657600f5461330a565b6010545b905060006133346064613326848761344e90919063ffffffff16565b61212e90919063ffffffff16565b905061338881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461324890919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161342891906137d5565b60405180910390a36134438185612aee90919063ffffffff16565b925050509392505050565b600080830361346057600090506134c2565b6000828461346e9190614431565b905082848261347d9190614360565b146134bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b4906144e5565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156134e5576134e4613ced565b5b6040519080825280602002602001820160405280156135135781602001602082028036833780820191505090505b509050308160008151811061352b5761352a61404a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f6919061451a565b8160018151811061360a5761360961404a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061364e3083610e77565b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016136b3959493929190614605565b600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b505050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016137729695949392919061465f565b60606040518083038185885af1158015613790573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906137b591906146c0565b5050505050565b6000819050919050565b6137cf816137bc565b82525050565b60006020820190506137ea60008301846137c6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561382a57808201518184015260208101905061380f565b60008484015250505050565b6000601f19601f8301169050919050565b6000613852826137f0565b61385c81856137fb565b935061386c81856020860161380c565b61387581613836565b840191505092915050565b6000602082019050818103600083015261389a8184613847565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138e1826138b6565b9050919050565b6138f1816138d6565b81146138fc57600080fd5b50565b60008135905061390e816138e8565b92915050565b61391d816137bc565b811461392857600080fd5b50565b60008135905061393a81613914565b92915050565b60008060408385031215613957576139566138ac565b5b6000613965858286016138ff565b92505060206139768582860161392b565b9150509250929050565b60008115159050919050565b61399581613980565b82525050565b60006020820190506139b0600083018461398c565b92915050565b6000806000606084860312156139cf576139ce6138ac565b5b60006139dd868287016138ff565b93505060206139ee868287016138ff565b92505060406139ff8682870161392b565b9150509250925092565b600060208284031215613a1f57613a1e6138ac565b5b6000613a2d848285016138ff565b91505092915050565b60008060408385031215613a4d57613a4c6138ac565b5b6000613a5b8582860161392b565b9250506020613a6c8582860161392b565b9150509250929050565b600080600060608486031215613a8f57613a8e6138ac565b5b6000613a9d8682870161392b565b9350506020613aae8682870161392b565b9250506040613abf8682870161392b565b9150509250925092565b600060ff82169050919050565b613adf81613ac9565b82525050565b6000602082019050613afa6000830184613ad6565b92915050565b613b0981613980565b8114613b1457600080fd5b50565b600081359050613b2681613b00565b92915050565b60008060408385031215613b4357613b426138ac565b5b6000613b5185828601613b17565b9250506020613b628582860161392b565b9150509250929050565b6000613b77826138b6565b9050919050565b613b8781613b6c565b8114613b9257600080fd5b50565b600081359050613ba481613b7e565b92915050565b600060208284031215613bc057613bbf6138ac565b5b6000613bce84828501613b95565b91505092915050565b600060208284031215613bed57613bec6138ac565b5b6000613bfb8482850161392b565b91505092915050565b613c0d816138d6565b82525050565b6000602082019050613c286000830184613c04565b92915050565b6000819050919050565b6000613c53613c4e613c49846138b6565b613c2e565b6138b6565b9050919050565b6000613c6582613c38565b9050919050565b6000613c7782613c5a565b9050919050565b613c8781613c6c565b82525050565b6000602082019050613ca26000830184613c7e565b92915050565b60008060408385031215613cbf57613cbe6138ac565b5b6000613ccd858286016138ff565b9250506020613cde85828601613b17565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d2582613836565b810181811067ffffffffffffffff82111715613d4457613d43613ced565b5b80604052505050565b6000613d576138a2565b9050613d638282613d1c565b919050565b600067ffffffffffffffff821115613d8357613d82613ced565b5b602082029050602081019050919050565b600080fd5b6000613dac613da784613d68565b613d4d565b90508083825260208201905060208402830185811115613dcf57613dce613d94565b5b835b81811015613df85780613de488826138ff565b845260208401935050602081019050613dd1565b5050509392505050565b600082601f830112613e1757613e16613ce8565b5b8135613e27848260208601613d99565b91505092915050565b600060208284031215613e4657613e456138ac565b5b600082013567ffffffffffffffff811115613e6457613e636138b1565b5b613e7084828501613e02565b91505092915050565b60008060408385031215613e9057613e8f6138ac565b5b6000613e9e858286016138ff565b9250506020613eaf858286016138ff565b9150509250929050565b6000613ec482613c38565b9050919050565b6000613ed682613eb9565b9050919050565b613ee681613ecb565b82525050565b6000602082019050613f016000830184613edd565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613f3d6006836137fb565b9150613f4882613f07565b602082019050919050565b60006020820190508181036000830152613f6c81613f30565b9050919050565b6000604082019050613f8860008301856137c6565b613f9560208301846137c6565b9392505050565b7f746f6f2068696768000000000000000000000000000000000000000000000000600082015250565b6000613fd26008836137fb565b9150613fdd82613f9c565b602082019050919050565b6000602082019050818103600083015261400181613fc5565b9050919050565b60008151905061401781613914565b92915050565b600060208284031215614033576140326138ac565b5b600061404184828501614008565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006140b3826137bc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140e5576140e4614079565b5b600182019050919050565b60006140fb82613eb9565b9050919050565b61410b816140f0565b82525050565b60006020820190506141266000830184614102565b92915050565b6000614137826137bc565b9150614142836137bc565b925082820390508181111561415a57614159614079565b5b92915050565b7f686f6c6420757220686f7273657320626967206775792e000000000000000000600082015250565b60006141966017836137fb565b91506141a182614160565b602082019050919050565b600060208201905081810360008301526141c581614189565b9050919050565b7f7478000000000000000000000000000000000000000000000000000000000000600082015250565b60006142026002836137fb565b915061420d826141cc565b602082019050919050565b60006020820190508181036000830152614231816141f5565b9050919050565b7f77616c6c65740000000000000000000000000000000000000000000000000000600082015250565b600061426e6006836137fb565b915061427982614238565b602082019050919050565b6000602082019050818103600083015261429d81614261565b9050919050565b60006040820190506142b96000830185613c04565b6142c660208301846137c6565b9392505050565b6000819050919050565b60006142f26142ed6142e8846142cd565b613c2e565b6137bc565b9050919050565b614302816142d7565b82525050565b600060408201905061431d6000830185613c04565b61432a60208301846142f9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061436b826137bc565b9150614376836137bc565b92508261438657614385614331565b5b828204905092915050565b600061439c826137bc565b91506143a7836137bc565b92508282019050808211156143bf576143be614079565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006143fb601b836137fb565b9150614406826143c5565b602082019050919050565b6000602082019050818103600083015261442a816143ee565b9050919050565b600061443c826137bc565b9150614447836137bc565b9250828202614455816137bc565b9150828204841483151761446c5761446b614079565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006144cf6021836137fb565b91506144da82614473565b604082019050919050565b600060208201905081810360008301526144fe816144c2565b9050919050565b600081519050614514816138e8565b92915050565b6000602082840312156145305761452f6138ac565b5b600061453e84828501614505565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61457c816138d6565b82525050565b600061458e8383614573565b60208301905092915050565b6000602082019050919050565b60006145b282614547565b6145bc8185614552565b93506145c783614563565b8060005b838110156145f85781516145df8882614582565b97506145ea8361459a565b9250506001810190506145cb565b5085935050505092915050565b600060a08201905061461a60008301886137c6565b61462760208301876142f9565b818103604083015261463981866145a7565b90506146486060830185613c04565b61465560808301846137c6565b9695505050505050565b600060c0820190506146746000830189613c04565b61468160208301886137c6565b61468e60408301876142f9565b61469b60608301866142f9565b6146a86080830185613c04565b6146b560a08301846137c6565b979650505050505050565b6000806000606084860312156146d9576146d86138ac565b5b60006146e786828701614008565b93505060206146f886828701614008565b925050604061470986828701614008565b915050925092509256fea2646970667358221220d399664b53674d702dbf27bfc37a292118550642c0dba870484fbd03c09dea6764736f6c6343000811003360806040526ec097ce7bc90715b34b9f1000000000600b55610708600c556000600d5534801561002e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730cba60ca5ef4d42f92a5070a8fedd13be93e2861600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ee1806101286000396000f3fe6080604052600436106101025760003560e01c80638c21cd5211610095578063e2d2e21911610064578063e2d2e2191461032b578063e9a5c77614610356578063efca2eed14610381578063ffb2c479146103ac578063ffd49c84146103d557610111565b80638c21cd521461027a578063997664d7146102b7578063ce7c2ac2146102e2578063d0e30db01461032157610111565b80632d48e896116100d15780632d48e896146101d25780633a98ef39146101fb5780634634d81c146102265780634fab0ae81461024f57610111565b806311ce023d1461011657806314b6ca961461014157806326987b601461016a57806328fd31981461019557610111565b366101115761010f610400565b005b600080fd5b34801561012257600080fd5b5061012b6107e8565b604051610138919061167d565b60405180910390f35b34801561014d57600080fd5b5061016860048036038101906101639190611727565b6107ee565b005b34801561017657600080fd5b5061017f610aad565b60405161018c919061167d565b60405180910390f35b3480156101a157600080fd5b506101bc60048036038101906101b79190611767565b610ab3565b6040516101c9919061167d565b60405180910390f35b3480156101de57600080fd5b506101f960048036038101906101f49190611794565b610bcc565b005b34801561020757600080fd5b50610210610c36565b60405161021d919061167d565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190611767565b610c3c565b005b34801561025b57600080fd5b50610264610ca0565b604051610271919061167d565b60405180910390f35b34801561028657600080fd5b506102a1600480360381019061029c9190611767565b610ca6565b6040516102ae91906117ef565b60405180910390f35b3480156102c357600080fd5b506102cc610d13565b6040516102d9919061167d565b60405180910390f35b3480156102ee57600080fd5b5061030960048036038101906103049190611767565b610d19565b6040516103189392919061180a565b60405180910390f35b610329610400565b005b34801561033757600080fd5b50610340610d43565b60405161034d919061167d565b60405180910390f35b34801561036257600080fd5b5061036b610d49565b6040516103789190611850565b60405180910390f35b34801561038d57600080fd5b50610396610d6f565b6040516103a3919061167d565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce919061186b565b610d75565b005b3480156103e157600080fd5b506103ea610eb0565b6040516103f7919061167d565b60405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161045d9190611850565b602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e91906118ad565b90506000600267ffffffffffffffff8111156104bd576104bc6118da565b5b6040519080825280602002602001820160405280156104eb5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061191e565b816000815181106105935761059261194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106106045761060361194b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b81526004016106a19493929190611a7d565b6000604051808303818588803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b5050505050600061078383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016107349190611850565b602060405180830381865afa158015610751573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077591906118ad565b610eb690919063ffffffff16565b905061079a81600854610f0090919063ffffffff16565b6008819055506107dd6107cc6007546107be84600b54610f5e90919063ffffffff16565b610fd890919063ffffffff16565b600a54610f0090919063ffffffff16565b600a81905550505050565b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084657600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154111561089b5761089a82611022565b5b6000811180156108ed57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b15610900576108fb826112b5565b610962565b60008114801561095257506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156109615761096082611364565b5b5b6109cb816109bd600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754610eb690919063ffffffff16565b610f0090919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610a63600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b600e5481565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403610b075760009050610bc7565b6000610b54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050808211610baf57600092505050610bc7565b610bc28183610eb690919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c2457600080fd5b81600c8190555080600d819055505050565b60075481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9457600080fd5b610c9d81611022565b50565b600d5481565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf69190611af8565b108015610d0c5750600d54610d0a83610ab3565b115b9050919050565b60085481565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b600a5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000600380549050905060008103610d8d5750610ead565b60008060005a90505b8482108015610da457508383105b15610ea85783600e5410610dbb576000600e819055505b610e046003600e5481548110610dd457610dd361194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610ca6565b15610e5357610e526003600e5481548110610e2257610e2161194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611022565b5b610e78610e695a83610eb690919063ffffffff16565b83610f0090919063ffffffff16565b91505a9050600e6000815480929190610e9090611b2c565b91905055508280610ea090611b2c565b935050610d96565b505050505b50565b600c5481565b6000610ef883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061159d565b905092915050565b6000808284610f0f9190611af8565b905083811015610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90611bd1565b60405180910390fd5b8091505092915050565b6000808303610f705760009050610fd2565b60008284610f7e9190611bf1565b9050828482610f8d9190611c62565b14610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc490611d05565b60405180910390fd5b809150505b92915050565b600061101a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015403156112b257600061107882610ab3565b905060008111156112b05761109881600954610f0090919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016110fb929190611d25565b6020604051808303816000875af115801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190611d7a565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111d881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610f0090919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550611269600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461156b565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113789190611da7565b815481106113895761138861194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114075761140661194b565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506114a79190611da7565b815481106114b8576114b761194b565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600380548061153357611532611ddb565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000611596600b54611588600a5485610f5e90919063ffffffff16565b610fd890919063ffffffff16565b9050919050565b60008383111582906115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc9190611e89565b60405180910390fd5b50600083856115f49190611da7565b9050809150509392505050565b60008083118290611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163f9190611e89565b60405180910390fd5b50600083856116579190611c62565b9050809150509392505050565b6000819050919050565b61167781611664565b82525050565b6000602082019050611692600083018461166e565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006116c88261169d565b9050919050565b6116d8816116bd565b81146116e357600080fd5b50565b6000813590506116f5816116cf565b92915050565b61170481611664565b811461170f57600080fd5b50565b600081359050611721816116fb565b92915050565b6000806040838503121561173e5761173d611698565b5b600061174c858286016116e6565b925050602061175d85828601611712565b9150509250929050565b60006020828403121561177d5761177c611698565b5b600061178b848285016116e6565b91505092915050565b600080604083850312156117ab576117aa611698565b5b60006117b985828601611712565b92505060206117ca85828601611712565b9150509250929050565b60008115159050919050565b6117e9816117d4565b82525050565b600060208201905061180460008301846117e0565b92915050565b600060608201905061181f600083018661166e565b61182c602083018561166e565b611839604083018461166e565b949350505050565b61184a816116bd565b82525050565b60006020820190506118656000830184611841565b92915050565b60006020828403121561188157611880611698565b5b600061188f84828501611712565b91505092915050565b6000815190506118a7816116fb565b92915050565b6000602082840312156118c3576118c2611698565b5b60006118d184828501611898565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611918816116cf565b92915050565b60006020828403121561193457611933611698565b5b600061194284828501611909565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b60006119a96119a461199f8461197a565b611984565b611664565b9050919050565b6119b98161198e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6119f4816116bd565b82525050565b6000611a0683836119eb565b60208301905092915050565b6000602082019050919050565b6000611a2a826119bf565b611a3481856119ca565b9350611a3f836119db565b8060005b83811015611a70578151611a5788826119fa565b9750611a6283611a12565b925050600181019050611a43565b5085935050505092915050565b6000608082019050611a9260008301876119b0565b8181036020830152611aa48186611a1f565b9050611ab36040830185611841565b611ac0606083018461166e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611b0382611664565b9150611b0e83611664565b9250828201905080821115611b2657611b25611ac9565b5b92915050565b6000611b3782611664565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b6957611b68611ac9565b5b600182019050919050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611bbb601b83611b74565b9150611bc682611b85565b602082019050919050565b60006020820190508181036000830152611bea81611bae565b9050919050565b6000611bfc82611664565b9150611c0783611664565b9250828202611c1581611664565b91508282048414831517611c2c57611c2b611ac9565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611c6d82611664565b9150611c7883611664565b925082611c8857611c87611c33565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611cef602183611b74565b9150611cfa82611c93565b604082019050919050565b60006020820190508181036000830152611d1e81611ce2565b9050919050565b6000604082019050611d3a6000830185611841565b611d47602083018461166e565b9392505050565b611d57816117d4565b8114611d6257600080fd5b50565b600081519050611d7481611d4e565b92915050565b600060208284031215611d9057611d8f611698565b5b6000611d9e84828501611d65565b91505092915050565b6000611db282611664565b9150611dbd83611664565b9250828203905081811115611dd557611dd4611ac9565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60005b83811015611e33578082015181840152602081019050611e18565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e5b82611e0a565b611e658185611b74565b9350611e75818560208601611e15565b611e7e81611e3f565b840191505092915050565b60006020820190508181036000830152611ea38184611e50565b90509291505056fea2646970667358221220349f14ed693eed377958f6c7bfe0530f161e09cf147ca326853dd35469cad30b64736f6c63430008110033000000000000000000000000b82f66c633be065357815a44ff3e0d7d5008d5e0