0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a9059cbb11610097578063c2f99e9e11610071578063c2f99e9e1461049d578063d477f05f146104b9578063dd62ed3e146104d5578063f2fde38b146105055761018e565b8063a9059cbb14610431578063ab272e1114610461578063c1f1b1b51461047f5761018e565b806370a0823114610395578063715018a6146103c55780638187f516146103cf57806383bc55bc146103eb5780638da5cb5b146103f557806395d89b41146104135761018e565b8063313ce5671161014b5780634c8c0323116101255780634c8c0323146102fb5780634d931c2c1461032b5780635614717714610349578063592dd41a146103655761018e565b8063313ce5671461027d57806331bbf5551461029b5780633d0a4061146102cb5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806320cf5323146101ff57806323b872dd1461022f578063252bd90d1461025f575b600080fd5b61019b610521565b6040516101a891906122a4565b60405180910390f35b6101cb60048036038101906101c6919061235f565b6105b3565b6040516101d891906123ba565b60405180910390f35b6101e96105d6565b6040516101f691906123e4565b60405180910390f35b610219600480360381019061021491906123ff565b6105e0565b60405161022691906123e4565b60405180910390f35b6102496004803603810190610244919061242c565b610629565b60405161025691906123ba565b60405180910390f35b61026761068a565b60405161027491906123e4565b60405180910390f35b610285610694565b604051610292919061249b565b60405180910390f35b6102b560048036038101906102b091906123ff565b61069d565b6040516102c291906123e4565b60405180910390f35b6102e560048036038101906102e091906123ff565b6106e6565b6040516102f291906123ba565b60405180910390f35b610315600480360381019061031091906123ff565b610706565b60405161032291906123e4565b60405180910390f35b610333610762565b60405161034091906124c5565b60405180910390f35b610363600480360381019061035e919061250c565b6109d3565b005b61037f600480360381019061037a91906123ff565b610a80565b60405161038c91906123ba565b60405180910390f35b6103af60048036038101906103aa91906123ff565b610ade565b6040516103bc91906123e4565b60405180910390f35b6103cd610b26565b005b6103e960048036038101906103e491906123ff565b610b3a565b005b6103f3610b86565b005b6103fd610ba3565b60405161040a91906124c5565b60405180910390f35b61041b610bcd565b60405161042891906122a4565b60405180910390f35b61044b6004803603810190610446919061235f565b610c5f565b60405161045891906123ba565b60405180910390f35b610469610cb4565b60405161047691906123e4565b60405180910390f35b610487610cb9565b60405161049491906124c5565b60405180910390f35b6104b760048036038101906104b291906123ff565b610ce3565b005b6104d360048036038101906104ce91906123ff565b610dd2565b005b6104ef60048036038101906104ea919061254c565b610e1e565b6040516104fc91906123e4565b60405180910390f35b61051f600480360381019061051a91906123ff565b610ea5565b005b606060038054610530906125bb565b80601f016020809104026020016040519081016040528092919081815260200182805461055c906125bb565b80156105a95780601f1061057e576101008083540402835291602001916105a9565b820191906000526020600020905b81548152906001019060200180831161058c57829003601f168201915b5050505050905090565b6000806105be610f2b565b90506105cb818585610f33565b600191505092915050565b6000600254905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000803390507fb352261ef7efe6ddc66083e502bc8b20069f34b6f1eb4074bbb0c660fe878647858585604051610662939291906125ec565b60405180910390a1610675858285610f45565b610680858585610fd9565b9150509392505050565b6000600954905090565b60006012905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600d6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020549050919050565b600061076c611ef0565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108609190612638565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190612638565b6040518363ffffffff1660e01b815260040161092a929190612665565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b9190612638565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109db611ef0565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015610a7c578173ffffffffffffffffffffffffffffffffffffffff167f428eb1719dc5c48828fc028dfe2151bf4d03c81f84904688c3dff79df1970d9560405160405180910390a25b5050565b6000610a8a611ef0565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b2e611ef0565b610b386000611f77565b565b610b42611ef0565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001601060146101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bdc906125bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c08906125bb565b8015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b6000803390507fba8b28536e31c4719cfb16ad6859ac3b1a7802501f93bc22ee3fe9309cbb4ed3818585604051610c98939291906125ec565b60405180910390a1610cab818585610fd9565b91505092915050565b600090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ceb611ef0565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e906126da565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dda611ef0565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ead611ef0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1f5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f1691906124c5565b60405180910390fd5b610f2881611f77565b50565b600033905090565b610f40838383600161203d565b505050565b6000610f518484610e1e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fd35781811015610fc3578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610fba939291906126fa565b60405180910390fd5b610fd28484848403600061203d565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361104c5760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161104391906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110be5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110b591906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561116a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561140857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612638565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612638565b6040518363ffffffff1660e01b815260040161132d929190612665565b602060405180830381865afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e9190612638565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc4a4ea6abc08bd7f8df3db8a1c998f19b3e0c348176f93732cd54db1a4b50136600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113ff91906124c5565b60405180910390a15b6001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156114a15750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114fb5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115555750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115af5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116095750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611691576002600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879061277d565b60405180910390fd5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117e1576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461173691906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a9576001600960008282546117a191906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e1836040516117d8919061284c565b60405180910390a15b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611931576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188691906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118f9576001600960008282546118f191906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e18360405161192891906128c6565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119dc5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a365750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b36576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8b91906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611afe57600160096000828254611af691906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e183604051611b2d9190612940565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc5576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611be65750601060149054906101000a900460ff16155b8015611c3c5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cc4576002600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906129ba565b60405180910390fd5b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d17578160026000828254611d0b91906127cc565b92505081905550611dea565b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611da3578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d9a939291906126fa565b60405180910390fd5b8281036000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e335781600260008282540392505081905550611e80565b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edd91906123e4565b60405180910390a3600190509392505050565b611ef8610f2b565b73ffffffffffffffffffffffffffffffffffffffff16611f16610ba3565b73ffffffffffffffffffffffffffffffffffffffff1614611f7557611f39610f2b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f6c91906124c5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120af5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016120a691906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121215760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161211891906124c5565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561220e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161220591906123e4565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561224e578082015181840152602081019050612233565b60008484015250505050565b6000601f19601f8301169050919050565b600061227682612214565b612280818561221f565b9350612290818560208601612230565b6122998161225a565b840191505092915050565b600060208201905081810360008301526122be818461226b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f6826122cb565b9050919050565b612306816122eb565b811461231157600080fd5b50565b600081359050612323816122fd565b92915050565b6000819050919050565b61233c81612329565b811461234757600080fd5b50565b60008135905061235981612333565b92915050565b60008060408385031215612376576123756122c6565b5b600061238485828601612314565b92505060206123958582860161234a565b9150509250929050565b60008115159050919050565b6123b48161239f565b82525050565b60006020820190506123cf60008301846123ab565b92915050565b6123de81612329565b82525050565b60006020820190506123f960008301846123d5565b92915050565b600060208284031215612415576124146122c6565b5b600061242384828501612314565b91505092915050565b600080600060608486031215612445576124446122c6565b5b600061245386828701612314565b935050602061246486828701612314565b92505060406124758682870161234a565b9150509250925092565b600060ff82169050919050565b6124958161247f565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf816122eb565b82525050565b60006020820190506124da60008301846124b6565b92915050565b6124e98161239f565b81146124f457600080fd5b50565b600081359050612506816124e0565b92915050565b60008060408385031215612523576125226122c6565b5b600061253185828601612314565b9250506020612542858286016124f7565b9150509250929050565b60008060408385031215612563576125626122c6565b5b600061257185828601612314565b925050602061258285828601612314565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806125d357607f821691505b6020821081036125e6576125e561258c565b5b50919050565b600060608201905061260160008301866124b6565b61260e60208301856124b6565b61261b60408301846123d5565b949350505050565b600081519050612632816122fd565b92915050565b60006020828403121561264e5761264d6122c6565b5b600061265c84828501612623565b91505092915050565b600060408201905061267a60008301856124b6565b61268760208301846124b6565b9392505050565b7f4e6f742073657400000000000000000000000000000000000000000000000000600082015250565b60006126c460078361221f565b91506126cf8261268e565b602082019050919050565b600060208201905081810360008301526126f3816126b7565b9050919050565b600060608201905061270f60008301866124b6565b61271c60208301856123d5565b61272960408301846123d5565b949350505050565b7f4572726f7220696e2070726f63657373696e67206d6174680000000000000000600082015250565b600061276760188361221f565b915061277282612731565b602082019050919050565b600060208201905081810360008301526127968161275a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127d782612329565b91506127e283612329565b92508282019050808211156127fa576127f961279d565b5b92915050565b7f556e6976657273616c20526f7574657200000000000000000000000000000000600082015250565b600061283660108361221f565b915061284182612800565b602082019050919050565b600060408201905061286160008301846124b6565b818103602083015261287281612829565b905092915050565b7f563220526f757465720000000000000000000000000000000000000000000000600082015250565b60006128b060098361221f565b91506128bb8261287a565b602082019050919050565b60006040820190506128db60008301846124b6565b81810360208301526128ec816128a3565b905092915050565b7f4469726563742053776170202d20506169720000000000000000000000000000600082015250565b600061292a60128361221f565b9150612935826128f4565b602082019050919050565b600060408201905061295560008301846124b6565b81810360208301526129668161291d565b905092915050565b7f4572726f7220696e20636f75706f6e206d617468000000000000000000000000600082015250565b60006129a460148361221f565b91506129af8261296e565b602082019050919050565b600060208201905081810360008301526129d381612997565b905091905056fea2646970667358221220a1cf1a38848c0b46804a71119ca5d9ad29ddd9b1c09f1e0a23f1820b273402ca64736f6c63430008180033
0x6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060146101000a81548160ff021916908315150217905550348015620000d657600080fd5b50336040518060400160405280600481526020017f46524544000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f465245440000000000000000000000000000000000000000000000000000000081525081600390816200015591906200087e565b5080600490816200016791906200087e565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001df5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001d69190620009aa565b60405180910390fd5b620001f0816200027860201b60201c565b506200023133620002066200033e60201b60201c565b600a62000214919062000b57565b63041cdb4062000225919062000ba8565b6200034760201b60201c565b33600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000c99565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003bc5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620003b39190620009aa565b60405180910390fd5b620003d060008383620003d460201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200042a5780600260008282546200041d919062000bf3565b9250508190555062000500565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620004b9578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004b09392919062000c3f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200054b578060026000828254039250508190555062000598565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005f7919062000c7c565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068657607f821691505b6020821081036200069c576200069b6200063e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006c7565b620007128683620006c7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200075f6200075962000753846200072a565b62000734565b6200072a565b9050919050565b6000819050919050565b6200077b836200073e565b620007936200078a8262000766565b848454620006d4565b825550505050565b600090565b620007aa6200079b565b620007b781848462000770565b505050565b5b81811015620007df57620007d3600082620007a0565b600181019050620007bd565b5050565b601f8211156200082e57620007f881620006a2565b6200080384620006b7565b8101602085101562000813578190505b6200082b6200082285620006b7565b830182620007bc565b50505b505050565b600082821c905092915050565b6000620008536000198460080262000833565b1980831691505092915050565b60006200086e838362000840565b9150826002028217905092915050565b620008898262000604565b67ffffffffffffffff811115620008a557620008a46200060f565b5b620008b182546200066d565b620008be828285620007e3565b600060209050601f831160018114620008f65760008415620008e1578287015190505b620008ed858262000860565b8655506200095d565b601f1984166200090686620006a2565b60005b82811015620009305784890151825560018201915060208501945060208101905062000909565b868310156200095057848901516200094c601f89168262000840565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009928262000965565b9050919050565b620009a48162000985565b82525050565b6000602082019050620009c1600083018462000999565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a555780860481111562000a2d5762000a2c620009c7565b5b600185161562000a3d5780820291505b808102905062000a4d85620009f6565b945062000a0d565b94509492505050565b60008262000a70576001905062000b43565b8162000a80576000905062000b43565b816001811462000a99576002811462000aa45762000ada565b600191505062000b43565b60ff84111562000ab95762000ab8620009c7565b5b8360020a91508482111562000ad35762000ad2620009c7565b5b5062000b43565b5060208310610133831016604e8410600b841016171562000b145782820a90508381111562000b0e5762000b0d620009c7565b5b62000b43565b62000b23848484600162000a03565b9250905081840481111562000b3d5762000b3c620009c7565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b64826200072a565b915062000b718362000b4a565b925062000ba07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a5e565b905092915050565b600062000bb5826200072a565b915062000bc2836200072a565b925082820262000bd2816200072a565b9150828204841483151762000bec5762000beb620009c7565b5b5092915050565b600062000c00826200072a565b915062000c0d836200072a565b925082820190508082111562000c285762000c27620009c7565b5b92915050565b62000c39816200072a565b82525050565b600060608201905062000c56600083018662000999565b62000c65602083018562000c2e565b62000c74604083018462000c2e565b949350505050565b600060208201905062000c93600083018462000c2e565b92915050565b612a108062000ca96000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a9059cbb11610097578063c2f99e9e11610071578063c2f99e9e1461049d578063d477f05f146104b9578063dd62ed3e146104d5578063f2fde38b146105055761018e565b8063a9059cbb14610431578063ab272e1114610461578063c1f1b1b51461047f5761018e565b806370a0823114610395578063715018a6146103c55780638187f516146103cf57806383bc55bc146103eb5780638da5cb5b146103f557806395d89b41146104135761018e565b8063313ce5671161014b5780634c8c0323116101255780634c8c0323146102fb5780634d931c2c1461032b5780635614717714610349578063592dd41a146103655761018e565b8063313ce5671461027d57806331bbf5551461029b5780633d0a4061146102cb5761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806320cf5323146101ff57806323b872dd1461022f578063252bd90d1461025f575b600080fd5b61019b610521565b6040516101a891906122a4565b60405180910390f35b6101cb60048036038101906101c6919061235f565b6105b3565b6040516101d891906123ba565b60405180910390f35b6101e96105d6565b6040516101f691906123e4565b60405180910390f35b610219600480360381019061021491906123ff565b6105e0565b60405161022691906123e4565b60405180910390f35b6102496004803603810190610244919061242c565b610629565b60405161025691906123ba565b60405180910390f35b61026761068a565b60405161027491906123e4565b60405180910390f35b610285610694565b604051610292919061249b565b60405180910390f35b6102b560048036038101906102b091906123ff565b61069d565b6040516102c291906123e4565b60405180910390f35b6102e560048036038101906102e091906123ff565b6106e6565b6040516102f291906123ba565b60405180910390f35b610315600480360381019061031091906123ff565b610706565b60405161032291906123e4565b60405180910390f35b610333610762565b60405161034091906124c5565b60405180910390f35b610363600480360381019061035e919061250c565b6109d3565b005b61037f600480360381019061037a91906123ff565b610a80565b60405161038c91906123ba565b60405180910390f35b6103af60048036038101906103aa91906123ff565b610ade565b6040516103bc91906123e4565b60405180910390f35b6103cd610b26565b005b6103e960048036038101906103e491906123ff565b610b3a565b005b6103f3610b86565b005b6103fd610ba3565b60405161040a91906124c5565b60405180910390f35b61041b610bcd565b60405161042891906122a4565b60405180910390f35b61044b6004803603810190610446919061235f565b610c5f565b60405161045891906123ba565b60405180910390f35b610469610cb4565b60405161047691906123e4565b60405180910390f35b610487610cb9565b60405161049491906124c5565b60405180910390f35b6104b760048036038101906104b291906123ff565b610ce3565b005b6104d360048036038101906104ce91906123ff565b610dd2565b005b6104ef60048036038101906104ea919061254c565b610e1e565b6040516104fc91906123e4565b60405180910390f35b61051f600480360381019061051a91906123ff565b610ea5565b005b606060038054610530906125bb565b80601f016020809104026020016040519081016040528092919081815260200182805461055c906125bb565b80156105a95780601f1061057e576101008083540402835291602001916105a9565b820191906000526020600020905b81548152906001019060200180831161058c57829003601f168201915b5050505050905090565b6000806105be610f2b565b90506105cb818585610f33565b600191505092915050565b6000600254905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000803390507fb352261ef7efe6ddc66083e502bc8b20069f34b6f1eb4074bbb0c660fe878647858585604051610662939291906125ec565b60405180910390a1610675858285610f45565b610680858585610fd9565b9150509392505050565b6000600954905090565b60006012905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600d6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548152602001908152602001600020549050919050565b600061076c611ef0565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108609190612638565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190612638565b6040518363ffffffff1660e01b815260040161092a929190612665565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b9190612638565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109db611ef0565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015610a7c578173ffffffffffffffffffffffffffffffffffffffff167f428eb1719dc5c48828fc028dfe2151bf4d03c81f84904688c3dff79df1970d9560405160405180910390a25b5050565b6000610a8a611ef0565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b2e611ef0565b610b386000611f77565b565b610b42611ef0565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001601060146101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bdc906125bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610c08906125bb565b8015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b6000803390507fba8b28536e31c4719cfb16ad6859ac3b1a7802501f93bc22ee3fe9309cbb4ed3818585604051610c98939291906125ec565b60405180910390a1610cab818585610fd9565b91505092915050565b600090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ceb611ef0565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e906126da565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dda611ef0565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ead611ef0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1f5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610f1691906124c5565b60405180910390fd5b610f2881611f77565b50565b600033905090565b610f40838383600161203d565b505050565b6000610f518484610e1e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fd35781811015610fc3578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610fba939291906126fa565b60405180910390fd5b610fd28484848403600061203d565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361104c5760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161104391906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110be5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110b591906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561116a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561140857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112639190612638565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612638565b6040518363ffffffff1660e01b815260040161132d929190612665565b602060405180830381865afa15801561134a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136e9190612638565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fc4a4ea6abc08bd7f8df3db8a1c998f19b3e0c348176f93732cd54db1a4b50136600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113ff91906124c5565b60405180910390a15b6001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156114a15750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114fb5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115555750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156115af5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116095750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611691576002600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879061277d565b60405180910390fd5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036117e1576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461173691906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a9576001600960008282546117a191906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e1836040516117d8919061284c565b60405180910390a15b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611931576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188691906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118f9576001600960008282546118f191906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e18360405161192891906128c6565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119dc5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a365750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b36576001600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a8b91906127cc565b92505081905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611afe57600160096000828254611af691906127cc565b925050819055505b7f044633daffeb41b8f6d6b0885f8bc19876b8d4108ac5d0cdf893c0bb542408e183604051611b2d9190612940565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc5576001600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611be65750601060149054906101000a900460ff16155b8015611c3c5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cc4576002600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906129ba565b60405180910390fd5b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d17578160026000828254611d0b91906127cc565b92505081905550611dea565b60008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611da3578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611d9a939291906126fa565b60405180910390fd5b8281036000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e335781600260008282540392505081905550611e80565b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611edd91906123e4565b60405180910390a3600190509392505050565b611ef8610f2b565b73ffffffffffffffffffffffffffffffffffffffff16611f16610ba3565b73ffffffffffffffffffffffffffffffffffffffff1614611f7557611f39610f2b565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f6c91906124c5565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036120af5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016120a691906124c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121215760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161211891906124c5565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550801561220e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161220591906123e4565b60405180910390a35b50505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561224e578082015181840152602081019050612233565b60008484015250505050565b6000601f19601f8301169050919050565b600061227682612214565b612280818561221f565b9350612290818560208601612230565b6122998161225a565b840191505092915050565b600060208201905081810360008301526122be818461226b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122f6826122cb565b9050919050565b612306816122eb565b811461231157600080fd5b50565b600081359050612323816122fd565b92915050565b6000819050919050565b61233c81612329565b811461234757600080fd5b50565b60008135905061235981612333565b92915050565b60008060408385031215612376576123756122c6565b5b600061238485828601612314565b92505060206123958582860161234a565b9150509250929050565b60008115159050919050565b6123b48161239f565b82525050565b60006020820190506123cf60008301846123ab565b92915050565b6123de81612329565b82525050565b60006020820190506123f960008301846123d5565b92915050565b600060208284031215612415576124146122c6565b5b600061242384828501612314565b91505092915050565b600080600060608486031215612445576124446122c6565b5b600061245386828701612314565b935050602061246486828701612314565b92505060406124758682870161234a565b9150509250925092565b600060ff82169050919050565b6124958161247f565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf816122eb565b82525050565b60006020820190506124da60008301846124b6565b92915050565b6124e98161239f565b81146124f457600080fd5b50565b600081359050612506816124e0565b92915050565b60008060408385031215612523576125226122c6565b5b600061253185828601612314565b9250506020612542858286016124f7565b9150509250929050565b60008060408385031215612563576125626122c6565b5b600061257185828601612314565b925050602061258285828601612314565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806125d357607f821691505b6020821081036125e6576125e561258c565b5b50919050565b600060608201905061260160008301866124b6565b61260e60208301856124b6565b61261b60408301846123d5565b949350505050565b600081519050612632816122fd565b92915050565b60006020828403121561264e5761264d6122c6565b5b600061265c84828501612623565b91505092915050565b600060408201905061267a60008301856124b6565b61268760208301846124b6565b9392505050565b7f4e6f742073657400000000000000000000000000000000000000000000000000600082015250565b60006126c460078361221f565b91506126cf8261268e565b602082019050919050565b600060208201905081810360008301526126f3816126b7565b9050919050565b600060608201905061270f60008301866124b6565b61271c60208301856123d5565b61272960408301846123d5565b949350505050565b7f4572726f7220696e2070726f63657373696e67206d6174680000000000000000600082015250565b600061276760188361221f565b915061277282612731565b602082019050919050565b600060208201905081810360008301526127968161275a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127d782612329565b91506127e283612329565b92508282019050808211156127fa576127f961279d565b5b92915050565b7f556e6976657273616c20526f7574657200000000000000000000000000000000600082015250565b600061283660108361221f565b915061284182612800565b602082019050919050565b600060408201905061286160008301846124b6565b818103602083015261287281612829565b905092915050565b7f563220526f757465720000000000000000000000000000000000000000000000600082015250565b60006128b060098361221f565b91506128bb8261287a565b602082019050919050565b60006040820190506128db60008301846124b6565b81810360208301526128ec816128a3565b905092915050565b7f4469726563742053776170202d20506169720000000000000000000000000000600082015250565b600061292a60128361221f565b9150612935826128f4565b602082019050919050565b600060408201905061295560008301846124b6565b81810360208301526129668161291d565b905092915050565b7f4572726f7220696e20636f75706f6e206d617468000000000000000000000000600082015250565b60006129a460148361221f565b91506129af8261296e565b602082019050919050565b600060208201905081810360008301526129d381612997565b905091905056fea2646970667358221220a1cf1a38848c0b46804a71119ca5d9ad29ddd9b1c09f1e0a23f1820b273402ca64736f6c63430008180033