60806040526040518060400160405280600781526020017f5045474153555300000000000000000000000000000000000000000000000000815250600090816200004a91906200043a565b506040518060400160405280600481526020017f5045474100000000000000000000000000000000000000000000000000000000815250600190816200009191906200043a565b506be04ee0ccb27ac646ac0000006002556012600360006101000a81548160ff021916908360ff160217905550348015620000cb57600080fd5b5060405162003c1638038062003c168339818101604052810190620000f191906200058b565b33600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050620005bd565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200024257607f821691505b602082108103620002585762000257620001fa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000283565b620002ce868362000283565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200031b620003156200030f84620002e6565b620002f0565b620002e6565b9050919050565b6000819050919050565b6200033783620002fa565b6200034f620003468262000322565b84845462000290565b825550505050565b600090565b6200036662000357565b620003738184846200032c565b505050565b5b818110156200039b576200038f6000826200035c565b60018101905062000379565b5050565b601f821115620003ea57620003b4816200025e565b620003bf8462000273565b81016020851015620003cf578190505b620003e7620003de8562000273565b83018262000378565b50505b505050565b600082821c905092915050565b60006200040f60001984600802620003ef565b1980831691505092915050565b60006200042a8383620003fc565b9150826002028217905092915050565b6200044582620001c0565b67ffffffffffffffff811115620004615762000460620001cb565b5b6200046d825462000229565b6200047a8282856200039f565b600060209050601f831160018114620004b257600084156200049d578287015190505b620004a985826200041c565b86555062000519565b601f198416620004c2866200025e565b60005b82811015620004ec57848901518255600182019150602085019450602081019050620004c5565b868310156200050c578489015162000508601f891682620003fc565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005538262000526565b9050919050565b620005658162000546565b81146200057157600080fd5b50565b60008151905062000585816200055a565b92915050565b600060208284031215620005a457620005a362000521565b5b6000620005b48482850162000574565b91505092915050565b61364980620005cd6000396000f3fe6080604052600436106101e35760003560e01c806370a082311161010257806396c5e1ab11610095578063d21c8d5511610064578063d21c8d5514610725578063dd62ed3e14610750578063e2daf6651461078d578063e4849b32146107b8576101e3565b806396c5e1ab14610676578063a6f2ae3a146106b3578063a9059cbb146106bd578063d0fb0203146106fa576101e3565b80638da5cb5b116100d15780638da5cb5b146105ba5780638ebfc796146105e5578063923e51d51461060e57806395d89b411461064b576101e3565b806370a08231146104fe578063715018a61461053b578063858ced3514610552578063891e1ee01461058f576101e3565b8063313ce5671161017a578063470624021161014957806347062402146104425780634a0af68d1461046d57806361b40839146104aa57806365f6a921146104d3576101e3565b8063313ce56714610372578063376d567c1461039d5780633ef530eb146103da5780633f4218e014610405576101e3565b806318160ddd116101b657806318160ddd146102b657806323b872dd146102e15780632b14ca561461031e5780632c7ee94614610349576101e3565b806306fdde03146101e8578063095ea7b3146102135780630b78f9c01461025057806316e3b09c14610279575b600080fd5b3480156101f457600080fd5b506101fd6107e1565b60405161020a9190612bc6565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612c81565b61086f565b6040516102479190612cdc565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612cf7565b610961565b005b34801561028557600080fd5b506102a0600480360381019061029b9190612d37565b610ad8565b6040516102ad9190612cdc565b60405180910390f35b3480156102c257600080fd5b506102cb610b91565b6040516102d89190612d73565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190612d8e565b610b97565b6040516103159190612cdc565b60405180910390f35b34801561032a57600080fd5b5061033361134c565b6040516103409190612d73565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612cf7565b611352565b005b34801561037e57600080fd5b5061038761147f565b6040516103949190612dfd565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190612e18565b611492565b6040516103d19190612cdc565b60405180910390f35b3480156103e657600080fd5b506103ef611538565b6040516103fc9190612cdc565b60405180910390f35b34801561041157600080fd5b5061042c60048036038101906104279190612e18565b6115e1565b6040516104399190612cdc565b60405180910390f35b34801561044e57600080fd5b50610457611601565b6040516104649190612d73565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612e18565b611607565b6040516104a19190612cdc565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612e18565b6116ad565b005b3480156104df57600080fd5b506104e8611838565b6040516104f59190612e54565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190612e18565b61185e565b6040516105329190612d73565b60405180910390f35b34801561054757600080fd5b50610550611876565b005b34801561055e57600080fd5b5061057960048036038101906105749190612e18565b6119db565b6040516105869190612cdc565b60405180910390f35b34801561059b57600080fd5b506105a4611a81565b6040516105b19190612e54565b60405180910390f35b3480156105c657600080fd5b506105cf611aa7565b6040516105dc9190612e54565b60405180910390f35b3480156105f157600080fd5b5061060c60048036038101906106079190612e9b565b611acd565b005b34801561061a57600080fd5b5061063560048036038101906106309190612e18565b611c16565b6040516106429190612cdc565b60405180910390f35b34801561065757600080fd5b50610660611cae565b60405161066d9190612bc6565b60405180910390f35b34801561068257600080fd5b5061069d60048036038101906106989190612d37565b611d3c565b6040516106aa9190612cdc565b60405180910390f35b6106bb611dab565b005b3480156106c957600080fd5b506106e460048036038101906106df9190612c81565b612210565b6040516106f19190612cdc565b60405180910390f35b34801561070657600080fd5b5061070f612430565b60405161071c9190612e54565b60405180910390f35b34801561073157600080fd5b5061073a612456565b6040516107479190612e54565b60405180910390f35b34801561075c57600080fd5b5061077760048036038101906107729190612edb565b61247c565b6040516107849190612d73565b60405180910390f35b34801561079957600080fd5b506107a26124a1565b6040516107af9190612e54565b60405180910390f35b3480156107c457600080fd5b506107df60048036038101906107da9190612d37565b6124c7565b005b600080546107ee90612f4a565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90612f4a565b80156108675780601f1061083c57610100808354040283529160200191610867565b820191906000526020600020905b81548152906001019060200180831161084a57829003601f168201915b505050505081565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161094f9190612d73565b60405180910390a36001905092915050565b7332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109fc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a0557600080fd5b6064821115610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4090612fc7565b60405180910390fd5b6064811115610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490613033565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051610acc929190613053565b60405180910390a15050565b60007332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b755750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b7e57600080fd5b610b883383612824565b60019050919050565b60025481565b600081600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c12906130c8565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613134565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d40906131a0565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dc757610dc46064610db6600e54866129ad90919063ffffffff16565b612a2790919063ffffffff16565b90505b6000610ddc8285612a7f90919063ffffffff16565b9050610e3084600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f90919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ec581600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f659190612d73565b60405180910390a3600082111561107157610fc882600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110689190612d73565b60405180910390a35b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561114957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b1561133f576111dd84600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516113369190612d73565b60405180910390a35b6001925050509392505050565b600e5481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ac57600080fd5b60648211156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790612fc7565b60405180910390fd5b6064811115611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90613033565b60405180910390fd5b81600d8190555080600e819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a18282604051611473929190613053565b60405180910390a15050565b600360009054906101000a900460ff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ee57600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60007332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115d55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115de57600080fd5b90565b60066020528060005260406000206000915054906101000a900460ff1681565b600d5481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461166357600080fd5b81600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b7332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117485750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61175157600080fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061320c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915090505481565b7332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119115750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61191a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a3757600080fd5b81600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b685750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611b7157600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611c12578173ffffffffffffffffffffffffffffffffffffffff167fedf77dfa35bf29ea56a9082d8b89075bd94fd237149c165ce43a4ae41968de3760405160405180910390a25b5050565b60007332b359fb5e9bc72d9c0f3c3b5a4dd8f33ba91f4c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c6457600080fd5b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60018054611cbb90612f4a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce790612f4a565b8015611d345780601f10611d0957610100808354040283529160200191611d34565b820191906000526020600020905b815481529060010190602001808311611d1757829003601f168201915b505050505081565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d9857600080fd5b611da23383612824565b60019050919050565b60003411611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de59061329e565b60405180910390fd5b60003490506000600d5411156120ac576000611e286064611e1a600d54856129ad90919063ffffffff16565b612a2790919063ffffffff16565b90506000611e3f8284612a7f90919063ffffffff16565b9050611eb58160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b60046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f999190612d73565b60405180910390a360008211156120a557611ffc82600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161209c9190612d73565b60405180910390a35b505061220d565b6121208160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b60046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122049190612d73565b60405180910390a35b50565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561225e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361229757600080fd5b6122e982600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237e82600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161241e9190612d73565b60405180910390a36001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906130c8565b60405180910390fd5b60006125736064612565600e54856129ad90919063ffffffff16565b612a2790919063ffffffff16565b9050600061258a8284612a7f90919063ffffffff16565b90506125de83600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7f90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061267381600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127139190612d73565b60405180910390a3600082111561281f5761277682600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128169190612d73565b60405180910390a35b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288a9061330a565b60405180910390fd5b6128a881600254612ad890919063ffffffff16565b60028190555061290081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad890919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129a19190612d73565b60405180910390a35050565b60008083036129bf5760009050612a21565b600082846129cd9190613359565b90508284826129dc91906133ca565b14612a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1390613447565b60405180910390fd5b809150505b92915050565b6000808211612a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a62906134b3565b60405180910390fd5b8183612a7791906133ca565b905092915050565b600082821115612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb9061351f565b60405180910390fd5b8183612ad0919061353f565b905092915050565b6000808284612ae79190613573565b905083811015612b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b23906135f3565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b70578082015181840152602081019050612b55565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b9882612b36565b612ba28185612b41565b9350612bb2818560208601612b52565b612bbb81612b7c565b840191505092915050565b60006020820190508181036000830152612be08184612b8d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1882612bed565b9050919050565b612c2881612c0d565b8114612c3357600080fd5b50565b600081359050612c4581612c1f565b92915050565b6000819050919050565b612c5e81612c4b565b8114612c6957600080fd5b50565b600081359050612c7b81612c55565b92915050565b60008060408385031215612c9857612c97612be8565b5b6000612ca685828601612c36565b9250506020612cb785828601612c6c565b9150509250929050565b60008115159050919050565b612cd681612cc1565b82525050565b6000602082019050612cf16000830184612ccd565b92915050565b60008060408385031215612d0e57612d0d612be8565b5b6000612d1c85828601612c6c565b9250506020612d2d85828601612c6c565b9150509250929050565b600060208284031215612d4d57612d4c612be8565b5b6000612d5b84828501612c6c565b91505092915050565b612d6d81612c4b565b82525050565b6000602082019050612d886000830184612d64565b92915050565b600080600060608486031215612da757612da6612be8565b5b6000612db586828701612c36565b9350506020612dc686828701612c36565b9250506040612dd786828701612c6c565b9150509250925092565b600060ff82169050919050565b612df781612de1565b82525050565b6000602082019050612e126000830184612dee565b92915050565b600060208284031215612e2e57612e2d612be8565b5b6000612e3c84828501612c36565b91505092915050565b612e4e81612c0d565b82525050565b6000602082019050612e696000830184612e45565b92915050565b612e7881612cc1565b8114612e8357600080fd5b50565b600081359050612e9581612e6f565b92915050565b60008060408385031215612eb257612eb1612be8565b5b6000612ec085828601612c36565b9250506020612ed185828601612e86565b9150509250929050565b60008060408385031215612ef257612ef1612be8565b5b6000612f0085828601612c36565b9250506020612f1185828601612c36565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f6257607f821691505b602082108103612f7557612f74612f1b565b5b50919050565b7f427579206665652063616e6e6f74206578636565642031303025000000000000600082015250565b6000612fb1601a83612b41565b9150612fbc82612f7b565b602082019050919050565b60006020820190508181036000830152612fe081612fa4565b9050919050565b7f53656c6c206665652063616e6e6f742065786365656420313030250000000000600082015250565b600061301d601b83612b41565b915061302882612fe7565b602082019050919050565b6000602082019050818103600083015261304c81613010565b9050919050565b60006040820190506130686000830185612d64565b6130756020830184612d64565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006130b2601483612b41565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b600061311e601683612b41565b9150613129826130e8565b602082019050919050565b6000602082019050818103600083015261314d81613111565b9050919050565b7f496e76616c696420726563697069656e74206164647265737300000000000000600082015250565b600061318a601983612b41565b915061319582613154565b602082019050919050565b600060208201905081810360008301526131b98161317d565b9050919050565b7f41646472657373206973206e6f7420666565206578656d707400000000000000600082015250565b60006131f6601983612b41565b9150613201826131c0565b602082019050919050565b60006020820190508181036000830152613225816131e9565b9050919050565b7f45544820616d6f756e742073686f756c6420626520677265617465722074686160008201527f6e20300000000000000000000000000000000000000000000000000000000000602082015250565b6000613288602383612b41565b91506132938261322c565b604082019050919050565b600060208201905081810360008301526132b78161327b565b9050919050565b7f42455032303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006132f4601f83612b41565b91506132ff826132be565b602082019050919050565b60006020820190508181036000830152613323816132e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061336482612c4b565b915061336f83612c4b565b925082820261337d81612c4b565b915082820484148315176133945761339361332a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133d582612c4b565b91506133e083612c4b565b9250826133f0576133ef61339b565b5b828204905092915050565b7f4d756c7469706c69636174696f6e206f766572666c6f77000000000000000000600082015250565b6000613431601783612b41565b915061343c826133fb565b602082019050919050565b6000602082019050818103600083015261346081613424565b9050919050565b7f4469766973696f6e206279207a65726f00000000000000000000000000000000600082015250565b600061349d601083612b41565b91506134a882613467565b602082019050919050565b600060208201905081810360008301526134cc81613490565b9050919050565b7f5375627472616374696f6e206f766572666c6f77000000000000000000000000600082015250565b6000613509601483612b41565b9150613514826134d3565b602082019050919050565b60006020820190508181036000830152613538816134fc565b9050919050565b600061354a82612c4b565b915061355583612c4b565b925082820390508181111561356d5761356c61332a565b5b92915050565b600061357e82612c4b565b915061358983612c4b565b92508282019050808211156135a1576135a061332a565b5b92915050565b7f4164646974696f6e206f766572666c6f77000000000000000000000000000000600082015250565b60006135dd601183612b41565b91506135e8826135a7565b602082019050919050565b6000602082019050818103600083015261360c816135d0565b905091905056fea264697066735822122029879868f020e4569cfad2ffb6bc3dc0b5942f85345116ab7b1f266db003280464736f6c634300081200330000000000000000000000003040c38a2f3071d3e240537ad19d323c264a3e2c