60806040526000600b60006101000a81548160ff021916908315150217905550655af3107a4000600c553480156200003657600080fd5b5060405162003e4e38038062003e4e83398181016040528101906200005c919062000413565b8181816002908051906020019062000076929190620001c6565b5080600390805190602001906200008f929190620001c6565b50620000a0620000f360201b60201c565b6000819055505050620000c8620000bc620000f860201b60201c565b6200010060201b60201c565b6000600860146101000a81548160ff02191690831515021790555060016009819055505050620004fd565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001d490620004c7565b90600052602060002090601f016020900481019282620001f8576000855562000244565b82601f106200021357805160ff191683800117855562000244565b8280016001018555821562000244579182015b828111156200024357825182559160200191906001019062000226565b5b50905062000253919062000257565b5090565b5b808211156200027257600081600090555060010162000258565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002df8262000294565b810181811067ffffffffffffffff82111715620003015762000300620002a5565b5b80604052505050565b60006200031662000276565b9050620003248282620002d4565b919050565b600067ffffffffffffffff821115620003475762000346620002a5565b5b620003528262000294565b9050602081019050919050565b60005b838110156200037f57808201518184015260208101905062000362565b838111156200038f576000848401525b50505050565b6000620003ac620003a68462000329565b6200030a565b905082815260208101848484011115620003cb57620003ca6200028f565b5b620003d88482856200035f565b509392505050565b600082601f830112620003f857620003f76200028a565b5b81516200040a84826020860162000395565b91505092915050565b600080604083850312156200042d576200042c62000280565b5b600083015167ffffffffffffffff8111156200044e576200044d62000285565b5b6200045c85828601620003e0565b925050602083015167ffffffffffffffff81111562000480576200047f62000285565b5b6200048e85828601620003e0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004e057607f821691505b60208210811415620004f757620004f662000498565b5b50919050565b613941806200050d6000396000f3fe6080604052600436106101f95760003560e01c806370a082311161010d578063a035b1fe116100a0578063c23dc68f1161006f578063c23dc68f14610712578063c87b56dd1461074f578063e985e9c51461078c578063f2fde38b146107c9578063f43a22dc146107f2576101f9565b8063a035b1fe14610679578063a0712d68146106a4578063a22cb465146106c0578063b88d4fde146106e9576101f9565b80638da5cb5b116100dc5780638da5cb5b146105bd57806391b7f5ed146105e857806395d89b411461061157806399a2557a1461063c576101f9565b806370a0823114610515578063715018a6146105525780637ba5e621146105695780638462151c14610580576101f9565b806332cb6b0c1161019057806355f804b31161015f57806355f804b31461041c578063564566a8146104455780635bbb2177146104705780635c975abb146104ad5780636352211e146104d8576101f9565b806332cb6b0c146103885780633ccfd60b146103b357806342842e0e146103ca57806342966c68146103f3576101f9565b80630aaef285116101cc5780630aaef285146102cc57806318160ddd146102f75780631e7269c51461032257806323b872dd1461035f576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063081812fc14610266578063095ea7b3146102a3575b600080fd5b34801561020a57600080fd5b5061022560048036038101906102209190612885565b61081d565b60405161023291906128cd565b60405180910390f35b34801561024757600080fd5b506102506108af565b60405161025d9190612981565b60405180910390f35b34801561027257600080fd5b5061028d600480360381019061028891906129d9565b610941565b60405161029a9190612a47565b60405180910390f35b3480156102af57600080fd5b506102ca60048036038101906102c59190612a8e565b6109c0565b005b3480156102d857600080fd5b506102e1610b04565b6040516102ee9190612add565b60405180910390f35b34801561030357600080fd5b5061030c610b09565b6040516103199190612add565b60405180910390f35b34801561032e57600080fd5b5061034960048036038101906103449190612af8565b610b20565b6040516103569190612add565b60405180910390f35b34801561036b57600080fd5b5061038660048036038101906103819190612b25565b610b38565b005b34801561039457600080fd5b5061039d610e5d565b6040516103aa9190612add565b60405180910390f35b3480156103bf57600080fd5b506103c8610e63565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612b25565b610eba565b005b3480156103ff57600080fd5b5061041a600480360381019061041591906129d9565b610eda565b005b34801561042857600080fd5b50610443600480360381019061043e9190612cad565b610ee8565b005b34801561045157600080fd5b5061045a610f0a565b60405161046791906128cd565b60405180910390f35b34801561047c57600080fd5b5061049760048036038101906104929190612d56565b610f1d565b6040516104a49190612f06565b60405180910390f35b3480156104b957600080fd5b506104c2610fe0565b6040516104cf91906128cd565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa91906129d9565b610ff7565b60405161050c9190612a47565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612af8565b611009565b6040516105499190612add565b60405180910390f35b34801561055e57600080fd5b506105676110c2565b005b34801561057557600080fd5b5061057e6110d6565b005b34801561058c57600080fd5b506105a760048036038101906105a29190612af8565b61110a565b6040516105b49190612fe6565b60405180910390f35b3480156105c957600080fd5b506105d2611254565b6040516105df9190612a47565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a91906129d9565b61127e565b005b34801561061d57600080fd5b50610626611290565b6040516106339190612981565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e9190613008565b611322565b6040516106709190612fe6565b60405180910390f35b34801561068557600080fd5b5061068e611536565b60405161069b9190612add565b60405180910390f35b6106be60048036038101906106b991906129d9565b61153c565b005b3480156106cc57600080fd5b506106e760048036038101906106e29190613087565b611806565b005b3480156106f557600080fd5b50610710600480360381019061070b9190613168565b61197e565b005b34801561071e57600080fd5b50610739600480360381019061073491906129d9565b6119f1565b6040516107469190613240565b60405180910390f35b34801561075b57600080fd5b50610776600480360381019061077191906129d9565b611a5b565b6040516107839190612981565b60405180910390f35b34801561079857600080fd5b506107b360048036038101906107ae919061325b565b611afa565b6040516107c091906128cd565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190612af8565b611b8e565b005b3480156107fe57600080fd5b50610807611c12565b6040516108149190612add565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061087857506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108a85750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108be906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546108ea906132ca565b80156109375780601f1061090c57610100808354040283529160200191610937565b820191906000526020600020905b81548152906001019060200180831161091a57829003601f168201915b5050505050905090565b600061094c82611c17565b610982576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109cb82610ff7565b90508073ffffffffffffffffffffffffffffffffffffffff166109ec611c76565b73ffffffffffffffffffffffffffffffffffffffff1614610a4f57610a1881610a13611c76565b611afa565b610a4e576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b606481565b6000610b13611c7e565b6001546000540303905090565b600d6020528060005260406000206000915090505481565b6000610b4382611c83565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610baa576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610bb684611d51565b91509150610bcc8187610bc7611c76565b611d78565b610c1857610be186610bdc611c76565b611afa565b610c17576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c7f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8c8686866001611dbc565b8015610c9757600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610d6585610d41888887611dc2565b7c020000000000000000000000000000000000000000000000000000000017611dea565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610ded576000600185019050600060046000838152602001908152602001600020541415610deb576000548114610dea578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610e558686866001611e15565b505050505050565b61271081565b610e6b611e1b565b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610eb6573d6000803e3d6000fd5b5050565b610ed58383836040518060200160405280600081525061197e565b505050565b610ee5816001611e99565b50565b610ef0611e1b565b80600a9080519060200190610f06929190612727565b5050565b600b60009054906101000a900460ff1681565b6060600083839050905060008167ffffffffffffffff811115610f4357610f42612b82565b5b604051908082528060200260200182016040528015610f7c57816020015b610f696127ad565b815260200190600190039081610f615790505b50905060005b828114610fd457610fab868683818110610f9f57610f9e6132fc565b5b905060200201356119f1565b828281518110610fbe57610fbd6132fc565b5b6020026020010181905250806001019050610f82565b50809250505092915050565b6000600860149054906101000a900460ff16905090565b600061100282611c83565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611071576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6110ca611e1b565b6110d460006120ed565b565b6110de611e1b565b600b60009054906101000a900460ff1615600b60006101000a81548160ff021916908315150217905550565b6060600080600061111a85611009565b905060008167ffffffffffffffff81111561113857611137612b82565b5b6040519080825280602002602001820160405280156111665781602001602082028036833780820191505090505b5090506111716127ad565b600061117b611c7e565b90505b8386146112465761118e816121b3565b915081604001511561119f5761123b565b600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146111df57816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561123a578083878060010198508151811061122d5761122c6132fc565b5b6020026020010181815250505b5b80600101905061117e565b508195505050505050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611286611e1b565b80600c8190555050565b60606003805461129f906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546112cb906132ca565b80156113185780601f106112ed57610100808354040283529160200191611318565b820191906000526020600020905b8154815290600101906020018083116112fb57829003601f168201915b5050505050905090565b606081831061135d576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806113686121de565b9050611372611c7e565b85101561138457611381611c7e565b94505b80841115611390578093505b600061139b87611009565b9050848610156113be5760008686039050818110156113b8578091505b506113c3565b600090505b60008167ffffffffffffffff8111156113df576113de612b82565b5b60405190808252806020026020018201604052801561140d5781602001602082028036833780820191505090505b5090506000821415611425578094505050505061152f565b6000611430886119f1565b90506000816040015161144557816000015190505b60008990505b88811415801561145b5750848714155b1561152157611469816121b3565b925082604001511561147a57611516565b600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16146114ba57826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115155780848880600101995081518110611508576115076132fc565b5b6020026020010181815250505b5b80600101905061144b565b508583528296505050505050505b9392505050565b600c5481565b60026009541415611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990613377565b60405180910390fd5b60026009819055506115926121e7565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f790613409565b60405180910390fd5b600b60009054906101000a900460ff1661164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690613475565b60405180910390fd5b80600081118015611661575060648111155b6116a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611697906134e1565b60405180910390fd5b606481600d60006116af612231565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116f49190613530565b1115611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c906135d2565b60405180910390fd5b61271081611741610b09565b61174b9190613530565b111561178c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117839061363e565b60405180910390fd5b81600d6000611799612231565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117e29190613530565b925050819055506117fa6117f4612231565b83612239565b50600160098190555050565b61180e611c76565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611873576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611880611c76565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661192d611c76565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161197291906128cd565b60405180910390a35050565b611989848484610b38565b60008373ffffffffffffffffffffffffffffffffffffffff163b146119eb576119b4848484846123f6565b6119ea576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6119f96127ad565b611a016127ad565b611a09611c7e565b831080611a1d5750611a196121de565b8310155b15611a2b5780915050611a56565b611a34836121b3565b9050806040015115611a495780915050611a56565b611a5283612556565b9150505b919050565b6060611a6682611c17565b611a9c576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611aa6612576565b9050600081511415611ac75760405180602001604052806000815250611af2565b80611ad184612608565b604051602001611ae292919061369a565b6040516020818303038152906040525b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b96611e1b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfd90613730565b60405180910390fd5b611c0f816120ed565b50565b606481565b600081611c22611c7e565b11158015611c31575060005482105b8015611c6f575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b60008082905080611c92611c7e565b11611d1a57600054811015611d195760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415611d17575b6000811415611d0d576004600083600190039350838152602001908152602001600020549050611ce2565b8092505050611d4c565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611dd9868684612658565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b611e23612231565b73ffffffffffffffffffffffffffffffffffffffff16611e41611254565b73ffffffffffffffffffffffffffffffffffffffff1614611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e9061379c565b60405180910390fd5b565b6000611ea483611c83565b90506000819050600080611eb786611d51565b915091508415611f2057611ed38184611ece611c76565b611d78565b611f1f57611ee883611ee3611c76565b611afa565b611f1e576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b611f2e836000886001611dbc565b8015611f3957600082555b600160806001901b03600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611fe183611f9e85600088611dc2565b7c02000000000000000000000000000000000000000000000000000000007c01000000000000000000000000000000000000000000000000000000001717611dea565b600460008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085161415612069576000600187019050600060046000838152602001908152602001600020541415612067576000548114612066578460046000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120d3836000886001611e15565b600160008154809291906001019190505550505050505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6121bb6127ad565b6121d76004600084815260200190815260200160002054612661565b9050919050565b60008054905090565b6121ef610fe0565b1561222f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222690613808565b60405180910390fd5b565b600033905090565b600080549050600082141561227a576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122876000848385611dbc565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506122fe836122ef6000866000611dc2565b6122f885612717565b17611dea565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461239f57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612364565b5060008214156123db576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060008190555050506123f16000848385611e15565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261241c611c76565b8786866040518563ffffffff1660e01b815260040161243e949392919061387d565b602060405180830381600087803b15801561245857600080fd5b505af192505050801561248957506040513d601f19601f8201168201806040525081019061248691906138de565b60015b612503573d80600081146124b9576040519150601f19603f3d011682016040523d82523d6000602084013e6124be565b606091505b506000815114156124fb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b61255e6127ad565b61256f61256a83611c83565b612661565b9050919050565b6060600a8054612585906132ca565b80601f01602080910402602001604051908101604052809291908181526020018280546125b1906132ca565b80156125fe5780601f106125d3576101008083540402835291602001916125fe565b820191906000526020600020905b8154815290600101906020018083116125e157829003601f168201915b5050505050905090565b606060806040510190508060405280825b60011561264457600183039250600a81066030018353600a810490508061263f57612644565b612619565b508181036020830392508083525050919050565b60009392505050565b6126696127ad565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b60006001821460e11b9050919050565b828054612733906132ca565b90600052602060002090601f016020900481019282612755576000855561279c565b82601f1061276e57805160ff191683800117855561279c565b8280016001018555821561279c579182015b8281111561279b578251825591602001919060010190612780565b5b5090506127a991906127fc565b5090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b5b808211156128155760008160009055506001016127fd565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128628161282d565b811461286d57600080fd5b50565b60008135905061287f81612859565b92915050565b60006020828403121561289b5761289a612823565b5b60006128a984828501612870565b91505092915050565b60008115159050919050565b6128c7816128b2565b82525050565b60006020820190506128e260008301846128be565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612922578082015181840152602081019050612907565b83811115612931576000848401525b50505050565b6000601f19601f8301169050919050565b6000612953826128e8565b61295d81856128f3565b935061296d818560208601612904565b61297681612937565b840191505092915050565b6000602082019050818103600083015261299b8184612948565b905092915050565b6000819050919050565b6129b6816129a3565b81146129c157600080fd5b50565b6000813590506129d3816129ad565b92915050565b6000602082840312156129ef576129ee612823565b5b60006129fd848285016129c4565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3182612a06565b9050919050565b612a4181612a26565b82525050565b6000602082019050612a5c6000830184612a38565b92915050565b612a6b81612a26565b8114612a7657600080fd5b50565b600081359050612a8881612a62565b92915050565b60008060408385031215612aa557612aa4612823565b5b6000612ab385828601612a79565b9250506020612ac4858286016129c4565b9150509250929050565b612ad7816129a3565b82525050565b6000602082019050612af26000830184612ace565b92915050565b600060208284031215612b0e57612b0d612823565b5b6000612b1c84828501612a79565b91505092915050565b600080600060608486031215612b3e57612b3d612823565b5b6000612b4c86828701612a79565b9350506020612b5d86828701612a79565b9250506040612b6e868287016129c4565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bba82612937565b810181811067ffffffffffffffff82111715612bd957612bd8612b82565b5b80604052505050565b6000612bec612819565b9050612bf88282612bb1565b919050565b600067ffffffffffffffff821115612c1857612c17612b82565b5b612c2182612937565b9050602081019050919050565b82818337600083830152505050565b6000612c50612c4b84612bfd565b612be2565b905082815260208101848484011115612c6c57612c6b612b7d565b5b612c77848285612c2e565b509392505050565b600082601f830112612c9457612c93612b78565b5b8135612ca4848260208601612c3d565b91505092915050565b600060208284031215612cc357612cc2612823565b5b600082013567ffffffffffffffff811115612ce157612ce0612828565b5b612ced84828501612c7f565b91505092915050565b600080fd5b600080fd5b60008083601f840112612d1657612d15612b78565b5b8235905067ffffffffffffffff811115612d3357612d32612cf6565b5b602083019150836020820283011115612d4f57612d4e612cfb565b5b9250929050565b60008060208385031215612d6d57612d6c612823565b5b600083013567ffffffffffffffff811115612d8b57612d8a612828565b5b612d9785828601612d00565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612dd881612a26565b82525050565b600067ffffffffffffffff82169050919050565b612dfb81612dde565b82525050565b612e0a816128b2565b82525050565b600062ffffff82169050919050565b612e2881612e10565b82525050565b608082016000820151612e446000850182612dcf565b506020820151612e576020850182612df2565b506040820151612e6a6040850182612e01565b506060820151612e7d6060850182612e1f565b50505050565b6000612e8f8383612e2e565b60808301905092915050565b6000602082019050919050565b6000612eb382612da3565b612ebd8185612dae565b9350612ec883612dbf565b8060005b83811015612ef9578151612ee08882612e83565b9750612eeb83612e9b565b925050600181019050612ecc565b5085935050505092915050565b60006020820190508181036000830152612f208184612ea8565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f5d816129a3565b82525050565b6000612f6f8383612f54565b60208301905092915050565b6000602082019050919050565b6000612f9382612f28565b612f9d8185612f33565b9350612fa883612f44565b8060005b83811015612fd9578151612fc08882612f63565b9750612fcb83612f7b565b925050600181019050612fac565b5085935050505092915050565b600060208201905081810360008301526130008184612f88565b905092915050565b60008060006060848603121561302157613020612823565b5b600061302f86828701612a79565b9350506020613040868287016129c4565b9250506040613051868287016129c4565b9150509250925092565b613064816128b2565b811461306f57600080fd5b50565b6000813590506130818161305b565b92915050565b6000806040838503121561309e5761309d612823565b5b60006130ac85828601612a79565b92505060206130bd85828601613072565b9150509250929050565b600067ffffffffffffffff8211156130e2576130e1612b82565b5b6130eb82612937565b9050602081019050919050565b600061310b613106846130c7565b612be2565b90508281526020810184848401111561312757613126612b7d565b5b613132848285612c2e565b509392505050565b600082601f83011261314f5761314e612b78565b5b813561315f8482602086016130f8565b91505092915050565b6000806000806080858703121561318257613181612823565b5b600061319087828801612a79565b94505060206131a187828801612a79565b93505060406131b2878288016129c4565b925050606085013567ffffffffffffffff8111156131d3576131d2612828565b5b6131df8782880161313a565b91505092959194509250565b6080820160008201516132016000850182612dcf565b5060208201516132146020850182612df2565b5060408201516132276040850182612e01565b50606082015161323a6060850182612e1f565b50505050565b600060808201905061325560008301846131eb565b92915050565b6000806040838503121561327257613271612823565b5b600061328085828601612a79565b925050602061329185828601612a79565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132e257607f821691505b602082108114156132f6576132f561329b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613361601f836128f3565b915061336c8261332b565b602082019050919050565b6000602082019050818103600083015261339081613354565b9050919050565b7f436f6e74726163742063616c6c6572206d7573742062652065787465726e616c60008201527f6c79206f776e6564206163636f756e7400000000000000000000000000000000602082015250565b60006133f36030836128f3565b91506133fe82613397565b604082019050919050565b60006020820190508181036000830152613422816133e6565b9050919050565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b600061345f6012836128f3565b915061346a82613429565b602082019050919050565b6000602082019050818103600083015261348e81613452565b9050919050565b7f45786365656473206d617820706572207472616e73616374696f6e0000000000600082015250565b60006134cb601b836128f3565b91506134d682613495565b602082019050919050565b600060208201905081810360008301526134fa816134be565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353b826129a3565b9150613546836129a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561357b5761357a613501565b5b828201905092915050565b7f4578636565647320706572206164647265737320737570706c79000000000000600082015250565b60006135bc601a836128f3565b91506135c782613586565b602082019050919050565b600060208201905081810360008301526135eb816135af565b9050919050565b7f4d617820737570706c7920657863656564656400000000000000000000000000600082015250565b60006136286013836128f3565b9150613633826135f2565b602082019050919050565b600060208201905081810360008301526136578161361b565b9050919050565b600081905092915050565b6000613674826128e8565b61367e818561365e565b935061368e818560208601612904565b80840191505092915050565b60006136a68285613669565b91506136b28284613669565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061371a6026836128f3565b9150613725826136be565b604082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137866020836128f3565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006137f26010836128f3565b91506137fd826137bc565b602082019050919050565b60006020820190508181036000830152613821816137e5565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061384f82613828565b6138598185613833565b9350613869818560208601612904565b61387281612937565b840191505092915050565b60006080820190506138926000830187612a38565b61389f6020830186612a38565b6138ac6040830185612ace565b81810360608301526138be8184613844565b905095945050505050565b6000815190506138d881612859565b92915050565b6000602082840312156138f4576138f3612823565b5b6000613902848285016138c9565b9150509291505056fea264697066735822122012ed17a8e10be840a58010ecbc5d344b01f03ab4eefe30da113472f299cc416b64736f6c6343000809003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001041746c61733a2041204e657720457261000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003414e450000000000000000000000000000000000000000000000000000000000